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

Xpath 如何使用SeleniumWebDriver获取滚动条内隐藏复选框的文本?,xpath,selenium-webdriver,hidden,Xpath,Selenium Webdriver,Hidden,我正在尝试按品牌自动筛选场景,现在遇到了这样的情况:我的代码无法打印隐藏在滚动条中的品牌名称 遵循的步骤 去 单击“跳过并浏览”按钮 搜索Apple并查看左侧的品牌列表 @FindAll({@FindBy(xpath=“//*@id='filter\u brands\u list']/div/div/li/label”)) 列出chkBrands 上面的代码行识别所有品牌名称,但当我使用下面的代码打印它们时,我只能看到可见的品牌名称 for(WebElement eachElement:chk

我正在尝试按品牌自动筛选场景,现在遇到了这样的情况:我的代码无法打印隐藏在滚动条中的品牌名称

遵循的步骤

  • 单击“跳过并浏览”按钮
  • 搜索Apple并查看左侧的品牌列表

    @FindAll({@FindBy(xpath=“//*@id='filter\u brands\u list']/div/div/li/label”))

    列出chkBrands

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

    for(WebElement eachElement:chkBrands){
        System.out.println("No. of brands is "+chkBrands.size());
        System.out.println(eachElement.getText());
    }
    
    你能告诉我解决办法吗?很抱歉,我想不出解决方案,因为我是Selenium的业余爱好者。

    WebElement.getText()
    仅当元素显示在屏幕上时才会返回该元素的文本

    这意味着如果
    isDisplayed
    方法返回
    false
    ,则
    getText()
    方法将返回空

    正如WebDriver规范中所定义的,Selenium WebDriver将只进行交互 对于可见元素,因此不可见元素的文本将 始终作为空字符串返回

    然而,在某些情况下,人们可能会发现获取隐藏文本很有用, 可以从元素的textContent、innerText或 innerHTML属性,通过调用element.attribute('attributeName')或 正在注入类似JavaScript的返回参数[0]。attributeName

    因此,您可以通过
    textContent
    属性获取文本

    eachElement.getAttribute("textContent")
    
    WebElement.getText()
    仅当元素显示在屏幕上时才会返回该元素的文本

    这意味着如果
    isDisplayed
    方法返回
    false
    ,则
    getText()
    方法将返回空

    正如WebDriver规范中所定义的,Selenium WebDriver将只进行交互 对于可见元素,因此不可见元素的文本将 始终作为空字符串返回

    然而,在某些情况下,人们可能会发现获取隐藏文本很有用, 可以从元素的textContent、innerText或 innerHTML属性,通过调用element.attribute('attributeName')或 正在注入类似JavaScript的返回参数[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);
    
    试试这个:

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

    嗨,马丹,谢谢你的回复。这对我很有用。@SrinivasanRamu那么你可以嗨Madhan了,谢谢你的回复。这对我很有用。@SrinivasanRamu那么你可以