【问题标题】:Unable to retrieve text selenium无法检索文本硒
【发布时间】:2017-01-04 06:30:32
【问题描述】:

脚本:

List<WebElement> addCheck=driver.findElements(By.name("ticketLess"));
for(WebElement checkbox : addCheck ){
    System.out.println(checkbox.getAttribute("Text"));
}

HTML:

<input type="checkbox" name="ticketLess" value="checkbox">
<font face="Arial, Helvetica, sans-serif" size="2">
        Same as Billing Address&nbsp;</font>

我想要得到的文字是Same as Billing Address。我也尝试使用getText(),但它没有返回任何内容。

【问题讨论】:

    标签: selenium text webdriver


    【解决方案1】:

    实际上,您在错误的元素上获取错误的属性名称以获取文本。 input 元素不包含内部文本。

    您需要找到font 元素,因为font 元素中存在文本,并使用.getText() 获取此文本,如下所示:-

    List<WebElement> addCheck = driver.findElements(By.cssSelector("input[name = 'ticketLess'] + font"));
    for(WebElement checkbox : addCheck ){
        System.out.println(checkbox.getText());
    }
    

    注意 :- 如果有多个具有相同定位器的复选框,并且您想要获取这些复选框字体的所有文本,那么您应该使用上面的代码,否则如果您只能获取单个复选框的文本字体使用findElement 代替如下:-

    WebElement checkbox = driver.findElement(By.cssSelector("input[name = 'ticketLess'] + font"));
    System.out.println(checkbox.getText());
    

    【讨论】:

    • 谢谢它的工作。除了 cssSelector 和 xpath 之外还有其他方法可以执行此操作吗?
    • 是的,您也可以使用xpath 定位器获得相同的结果,您可以将xpath 用作.//input[@name = 'ticketLess']/following::font。除了这些定位器之外,在这种情况下没有可能的定位器可以定位。
    【解决方案2】:
    List<WebElement> addCheck = driver.findElements(By.xpath(".//input[@name='ticketLess']/following-sibling::font"));
    for(WebElement checkbox : addCheck ){
        System.out.println(checkbox.getText());
    }
    

    上面使用的选择器选择输入的下一个兄弟,即&lt;font&gt;。你需要获取字体元素来检索你想要的文本。

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      相关资源
      最近更新 更多