我有一個<div name="myDiv">0</div>
。Selenium WebDriver getText
我試着寫一個測試myDiv有文本。使用WebDriver它是:
String text = webDriver.findElement(By.xpath("//div[@name='myDiv']")).getText();
但在結果中我有一個空字符串。我不應該使用getText()來獲取div的內容嗎?
我有一個<div name="myDiv">0</div>
。Selenium WebDriver getText
我試着寫一個測試myDiv有文本。使用WebDriver它是:
String text = webDriver.findElement(By.xpath("//div[@name='myDiv']")).getText();
但在結果中我有一個空字符串。我不應該使用getText()來獲取div的內容嗎?
我找到了答案,我只需要使用真正的瀏覽器爲我webdriver的
webDriver = new FirefoxDriver();
然後它工作。
也許這是JavaScript問題。
您還可以通過驗證事業部文: $ browser.is_element_present( 「// DIV [@名稱= 'myDiv']/[文本()= '0'。」)
硒2,我用這個文件,它精美的作品對我來說。
driver.getPageSource().contains(text);
我有同樣的問題;小挖把我帶到這個:
https://groups.google.com/forum/#!msg/webdriver/fRb_1QOr3wg/wzUsW3Ll6bgJ
HTMLUnitDriver(顯然FirefoxDriver)當您嘗試在它的CSS屬性「顯示」設置爲「無元素調用WebElement#的getText()將返回空字符串」。
這裏是我的解決方案:
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中得到了一些麻煩,而且啓動起來非常慢。
試試這個
WebDriver driver = new YourBrowserdirver(); //FirefoxDriver or ChromeDriver etc..
String Text = driver.findElement(By.id("myDiv")).getText();
System.out.println("The text present in myDiv = "+Text);
您可以使用gettext(),即使它沒有內容。這不應該是問題。 從你的答案看來,問題似乎是你沒有實例化FirefoxDriver。 Selenium WebDriver只會與可見元素交互,因此不可見元素的文本將始終作爲空字符串返回。
你可以嘗試使用jsoup庫來解析html。
首先,將頁面內容(driver.getPageSource())加載到jsoup文檔對象中,並使用該優秀庫的方法的豐富性(作者的榮譽)。
例子:
String pageSource = driver.getPageSource();
Document doc = Jsoup.parse(pageSource);
Elements requestsListRecords = doc.getElementsByTag("table").get(2).getElementsByTag("tr");
雖然這是事實,一個Chrome或Firefox的驅動程序將工作,你知道爲什麼HtmlUnitDriver不? – Khanetor