如何使用 Selenium WebDriver 获取滚动条内隐藏复选框的文本?

How to get the text of hidden check boxes inside a scroll bar using Selenium WebDriver?

我正在尝试在 BigBasket 中自动执行按品牌筛选方案,但现在我的代码无法打印隐藏在滚动条内的品牌名称。

要遵循的步骤

  1. 转到www.bigbasket.com
  2. 单击“跳过并浏览”按钮
  3. 搜索 Apple 并查看左侧的品牌列表

    @FindAll({@FindBy(xpath="//*@id='filter_brands_list']/div/div1/li/label")})

    List chkBrands;

上面的代码行标识了所有的品牌名称,但是当我使用下面的代码打印它们时,我只能看到可见的品牌名称

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

请问能告诉我解决方法吗?很抱歉我想不出解决方案,因为我是 Selenium 的业余爱好者。

WebElement.getText() 将 return 只有显示在屏幕上的元素的文本。

意味着如果 isDisplayed 方法 returns false 那么 getText() 方法将 return 为空。

Explanation with Examples Here

As defined in WebDriver spec, Selenium WebDriver will only interact with visible elements, therefore the text of an invisible element will always be returned as an empty string.

However, in some cases, one may find it useful to get the hidden text, which can be retrieved from element's textContent, innerText or innerHTML attribute, by calling element.attribute('attributeName') or injecting JavaScript like return arguments[0].attributeName.

所以你可以通过textContent属性

获取文本
eachElement.getAttribute("textContent")

试试这个:

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