2016-06-07 80 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);