2016-06-07 72 views
0

我試圖在BigBasket中自動執行Filter By Brand方案,現在我的代碼無法打印隱藏在滾動條內的品牌名稱。如何使用Selenium WebDriver獲取滾動條內隱藏複選框的文本?

要遵循的步驟

  1. 轉到www.bigbasket.com
  2. 點擊跳過&瀏覽按鈕
  3. 搜索蘋果和查看品牌列表左側

    @FindAll({ @FindBy(xpath =「// * @ id ='filter_brands_list']/div/div 1/li/label」)})

    列出chkBrands;

上面的代碼行識別所有的品牌名稱,但是當我打印出來使用下面的代碼,我只能看到品牌名稱是可見

for(WebElement eachElement:chkBrands){ 
    System.out.println("No. of brands is "+chkBrands.size()); 
    System.out.println(eachElement.getText()); 
} 

可否請你讓我知道解決方案?我很抱歉,因爲我是Selenium的業餘愛好者,所以無法想出解決方案。

回答

2

WebElement.getText()僅當它顯示在屏幕上時纔會返回元素的文本。

含義如果isDisplayed方法返回false然後getText()方法將返回空。

Explanation with Examples Here

如webdriver的規範中定義,硒的webdriver只會相互作用 與可見元素,因此一個不可見的元素的文本將 總是爲空字符串返回。

然而,在某些情況下,人們可能會發現它很有用,以獲得隱藏文字, 可以從元素的textContent,或innerText屬性的innerHTML 屬性,通過調用element.attribute(「的attributeName」)或 注入的JavaScript檢索像返回參數[0] .attributeName。

所以你可以通過textContent文本屬性

eachElement.getAttribute("textContent") 
+0

馬德漢您好,感謝您的回覆。這對我有效。 –

+0

@SrinivasanRamu然後你可以[接受它作爲答案](http://meta.stackexchange.com/a/5235) – Madhan

0

試試這個:

JavascriptExecutor je = (JavascriptExecutor)driver; 
WebElement element = driver.findElement(By.xpath("Your_xpath")); 
String text_value = ((JavascriptExecutor) driver).executeScript("return arguments[0].innerHTML;",element); 
相關問題