Selenium:测试文本是否完全可见
Selenium: Test if text is fully visible
有没有办法用 Selenium 检查文本是否完全可见?假设我有文字
lorum ipsum dolor sit amet
并且由于错误 css 它只读
lorem ips
在页面上,剩下的就是错放了下div。有没有办法断言全文可见?
如果您使用 Java,以下是执行此操作的一种方法。
首先,使用正确的定位器定位元素并执行 getText()
,然后将字符串与预期的(全文)进行比较。
driver.findElement(By.cssSelector("")).getText().equals("");
可能是这样的:
String actual = driver.findElement(By.cssSelector("")).getText().trim();
assertEquals(actual, expected);
这里是 JAVA 检查元素内的文本是否可见的代码:
public boolean checkForText() {
boolean isVisible = false;
try {
// Start by searching the element first. You can search by many ways. eg. css, id, className etc..
WebElement element = webDriver.findElement(By.id("the elemnts' id"));
System.out.println("Element found");
// Check if the found element has the text you want.
if(element.getText().equals("lorum ipsum dolor sit amet")) {
System.out.println("Text inside element looks good");
isVisible = true;
//additionally, you can perform an action on the element
//e.g. element.click();
} else {
System.out.println("Text does not match");
}
} catch (NoSuchElementException e) {
// the method findElement throws an exception.
System.out.println("Element not found");
}
return isVisible;
}
此方法 return 仅当找到元素时才为真,并且其内部文本对应于等于标准,即作为参数传递的文本 - lorum ipsum dolor sit amet
希望对您有所帮助 ;)
这是一个使用我创建的 jsFiddle 和 Java/Selenium 的简单示例。
HTML
<p id="1">lorum ipsum dolor sit amet</p>
<p id="2">lorum ipsum <div style="display:none">dolor sit amet</div></p>
代码
String expectedString = "lorum ipsum dolor sit amet";
WebDriver driver = new FirefoxDriver();
driver.get("https://jsfiddle.net/JeffC/t7scm8tg/1/");
driver.switchTo().frame("result");
String actual1 = driver.findElement(By.id("1")).getText().trim();
String actual2 = driver.findElement(By.id("2")).getText().trim();
System.out.println("actual1: " + actual1);
System.out.println("actual2: " + actual2);
System.out.println("PASS: " + expectedString.equals(actual1));
System.out.println("PASS: " + expectedString.equals(actual2));
输出
actual1: lorum ipsum dolor sit amet
actual2: lorum ipsum
PASS: true
PASS: false
Selenium 不会 return 用户不可见的文本,因此您需要做的就是将返回的内容与预期的字符串进行比较。如果它们不相等,则文本可能被隐藏。
有没有办法用 Selenium 检查文本是否完全可见?假设我有文字
lorum ipsum dolor sit amet
并且由于错误 css 它只读
lorem ips
在页面上,剩下的就是错放了下div。有没有办法断言全文可见?
如果您使用 Java,以下是执行此操作的一种方法。
首先,使用正确的定位器定位元素并执行 getText()
,然后将字符串与预期的(全文)进行比较。
driver.findElement(By.cssSelector("")).getText().equals("");
可能是这样的:
String actual = driver.findElement(By.cssSelector("")).getText().trim();
assertEquals(actual, expected);
这里是 JAVA 检查元素内的文本是否可见的代码:
public boolean checkForText() {
boolean isVisible = false;
try {
// Start by searching the element first. You can search by many ways. eg. css, id, className etc..
WebElement element = webDriver.findElement(By.id("the elemnts' id"));
System.out.println("Element found");
// Check if the found element has the text you want.
if(element.getText().equals("lorum ipsum dolor sit amet")) {
System.out.println("Text inside element looks good");
isVisible = true;
//additionally, you can perform an action on the element
//e.g. element.click();
} else {
System.out.println("Text does not match");
}
} catch (NoSuchElementException e) {
// the method findElement throws an exception.
System.out.println("Element not found");
}
return isVisible;
}
此方法 return 仅当找到元素时才为真,并且其内部文本对应于等于标准,即作为参数传递的文本 - lorum ipsum dolor sit amet
希望对您有所帮助 ;)
这是一个使用我创建的 jsFiddle 和 Java/Selenium 的简单示例。
HTML
<p id="1">lorum ipsum dolor sit amet</p>
<p id="2">lorum ipsum <div style="display:none">dolor sit amet</div></p>
代码
String expectedString = "lorum ipsum dolor sit amet";
WebDriver driver = new FirefoxDriver();
driver.get("https://jsfiddle.net/JeffC/t7scm8tg/1/");
driver.switchTo().frame("result");
String actual1 = driver.findElement(By.id("1")).getText().trim();
String actual2 = driver.findElement(By.id("2")).getText().trim();
System.out.println("actual1: " + actual1);
System.out.println("actual2: " + actual2);
System.out.println("PASS: " + expectedString.equals(actual1));
System.out.println("PASS: " + expectedString.equals(actual2));
输出
actual1: lorum ipsum dolor sit amet
actual2: lorum ipsum
PASS: true
PASS: false
Selenium 不会 return 用户不可见的文本,因此您需要做的就是将返回的内容与预期的字符串进行比较。如果它们不相等,则文本可能被隐藏。