Selenium:测试文本是否完全可见

时间:2016-02-05 16:54:16

标签: html css selenium selenium-webdriver ui-testing

如果文字完全可见,有没有办法检查Selenium?我们说我有文字

   lorum ipsum dolor sit amet

由于css错误,它只能读取

  

lorem ips

页面上的

,其余的是在错误放置的div下。有没有办法断言全文是可见的?

3 个答案:

答案 0 :(得分:1)

这是一个使用我创建的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不会返回用户不可见的文本,因此您需要做的就是将您获得的内容与预期的字符串进行比较。如果它们不相等,则可能隐藏文本。

答案 1 :(得分:-1)

如果您使用Java,则以下是执行此操作的一种方法。

首先,使用正确的定位器定位元素并执行getText(),然后将字符串与预期(全文)进行比较。

driver.findElement(By.cssSelector("")).getText().equals("");

可能是这样的:

String actual = driver.findElement(By.cssSelector("")).getText().trim();
assertEquals(actual, expected);

答案 2 :(得分:-1)

这是用于检查元素内的Text是否可见的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;

}    

如果找到该元素,此方法将返回true,并且其内部文本对应等于标准,即作为参数传递的文本 - lorum ipsum dolor sit amet

希望这会有所帮助;)