【问题标题】:On Selenium WebDriver how to get Text from Span Tag在 Selenium WebDriver 上如何从 Span Tag 中获取文本
【发布时间】:2013-10-14 19:39:55
【问题描述】:

在 Selenium Webdriver 上,我如何从 span 标签中检索文本并打印?

我需要提取文字UPS Overnight - Free

HTML代码如下:

div id="customSelect_3" class="select_wrapper">
<div class="select_display hovered">
<span class="selectLabel clear">UPS Overnight - Free</span>

使用以下代码:

String kk = wd.findElement(By.xpath(//*[@id='customSelect_3']/div[1]/span)).getText();
System.out.println(kk);

但上面的代码正在返回/打印文本:1

【问题讨论】:

  • 谢谢大家的好建议,但不幸的是,他们都没有得到预期的结果。结果仍然显示 1
  • 文本是否可见?使用Java时,我遇到了BR标签返回空的问题。我使用 .getAttribute("innerHTML") 而不是 .getText(),它会返回我正在寻找的内容,包括任何不可见的 HTML 或隐藏的文本。

标签: java html selenium selenium-webdriver


【解决方案1】:

您的代码应为 -

String kk = wd.findElement(By.cssSelector("div[id^='customSelect'] span.selectLabel")).getText();

使用 CSS。它更清洁、更容易。如果这能解决您的问题,请告诉我。

【讨论】:

    【解决方案2】:

    我同意 css 更好。如果您确实想通过 Xpath 执行此操作,您可以尝试:

        String kk = wd.findElement(By.xpath(.//*div[@id='customSelect_3']/div/span[@class='selectLabel clear'].getText()))
    

    【讨论】:

      【解决方案3】:

      如果您更愿意使用 xpath 并且该跨度是您的 div 下方的唯一跨度,请使用下面的示例。我建议使用 CSS(参见 sircapsalot 的帖子)。

      String kk = wd.findElement(By.xpath(//*[@id='customSelect_3']//span)).getText();
      

      css 示例:

      String kk = wd.findElement(By.cssSelector("div[id='customSelect_3'] span[class='selectLabel clear']")).getText();
      

      【讨论】:

        【解决方案4】:

        也许 span 元素被隐藏了。如果是这种情况,请使用 innerHtml 属性:

        通过.css:

        String kk = wd.findElement(By.cssSelector("#customSelect_3 span.selectLabel"))
                      .getAttribute("innerHTML");
        

        通过.xpath:

        String kk = wd.findElement(By.xpath(
                           "//*[@id='customSelect_3']/.//span[contains(@class,'selectLabel')]"))
                      .getAttribute("innerHTML");
        

        “/.//”的意思是“在选定的元素下面看”。

        【讨论】:

        • 谢谢,.getAttribute("innerHTML") 真的解决了我的问题
        【解决方案5】:
        String kk = wd.findElement(By.xpath(//*[@id='customSelect_3']/div[1]/span));
        
        kk.getText().toString();
        
        System.out.println(+kk.getText().toString());
        

        【讨论】:

        • 周围有一点文字会很好;)
        【解决方案6】:

        Pythonic 从 Span 标签中获取文本的方式:

        driver.find_element_by_xpath("//*[@id='customSelect_3']/.//span[contains(@class,'selectLabel clear')]").text
        

        【讨论】:

          【解决方案7】:

          从span标签获取文本的PHP方式:

          $spanText = $this->webDriver->findElement(WebDriverBy::xpath("//*[@id='specInformation']/tbody/tr[2]/td[1]/span[1]"))->getText();
          

          【讨论】:

            【解决方案8】:

            您需要定位元素并使用 getText() 方法提取文本。

            WebElement element = driver.findElement(By.id("customSelect_3"));
            System.out.println(element.getText());
            

            【讨论】:

              猜你喜欢
              • 2019-05-20
              • 2015-04-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-07-04
              • 2020-01-29
              • 1970-01-01
              相关资源
              最近更新 更多