java – Selenium WebDriver getText
我有一个< 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中得到的只是麻烦,而且启动速度非常慢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |