加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Selenium WebDriver getText

发布时间:2020-12-15 08:44:54 所属栏目:Java 来源:网络整理
导读:我有一个 div name =“myDiv” 0 / div. 我尝试编写一个myDiv中有0个文本的测试.使用WebDriver它是: String text = webDriver.findElement(By.xpath("//div[@name='myDiv']")).getText(); 但结果我有一个空字符串.我不应该使用getText()来获取div的内容吗?
我有一个< div name =“myDiv”> 0< / div>.

我尝试编写一个myDiv中有0个文本的测试.使用WebDriver它是:

String text =  webDriver.findElement(By.xpath("//div[@name='myDiv']")).getText();

但结果我有一个空字符串.我不应该使用getText()来获取div的内容吗?

解决方法

我有同样的问题;一点挖掘让我想到了这个:

https://groups.google.com/forum/#!msg/webdriver/fRb_1QOr3wg/wzUsW3Ll6bgJ

当您尝试在CSS属性“display”设置为“none”的元素上调用WebElement#getText()时,HTMLUnitDriver(显然是FirefoxDriver)将返回空字符串.

这是我的解决方案:

public void assertContainsText(final By by,final String value) { 
    browser.waitTillElementPresent(by);
        Boolean result = new WebDriverWait(getWebDriver(),Browser.DEFAULT_WAIT_TIMEOUT_SECONDS).until(new ExpectedCondition<Boolean>() {
            @Override
            public Boolean apply(WebDriver arg0) {
                WebElement elem = arg0.findElement(by);
                String text = "";
                if (elem.isDisplayed()) {
                    text = elem.getText();
                } else {
                  //have to use JavaScript because HtmlUnit will return empty string for a hidden element's text
                    text = (String) executeScript("return arguments[0].innerHTML",elem);
                    text = text.replace("<BR></BR>","n"); //scary
                }
                return text.contains(value);
            }
        });
        Assert.assertTrue(by.toString() + " contains value ["+value+"]",result);
}

是的,它像罪一样难看.请注意text.replace(“< BR>< / BR>”) – 这是因为拉出原始数据时不会转义HTML标记.如果你在元素上调用#getText(),WebDriver就会很好地’unescape’.

我现在向我们的IT人员请求在我们的CI服务器上安装X-Windows,这样我们就可以运行FirefoxDriver了.我们从HTMLUnitDriver中得到的只是麻烦,而且启动速度非常慢.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读