如何使用Selenium Webdriver在此HTML中获取此文本?

时间:2015-10-26 18:35:15

标签: html selenium xpath highcharts

我正在尝试检索此文本
== “1532.6788418669355”
从这个HTML。但是,我尝试的任何东西似乎都没有用 以下是我的尝试:

  1. IList选项= Driver.FindElements(By.XPath(“.// span // *”)); 选项[0] .Text =“” 这里没有其他有用的属性
  2. Driver.FindElements(By.XPath( “// B”)); 这里也没有文字,只返回了1个项目
  3. Driver.FindElements(By.XPath( “// DIV [@类= 'highcharts-提示'] /跨度”)) 计数= 1
  4. 中没有此元素中的文字

    <div class="highcharts-tooltip" style="position: absolute; left: 83px; top: 15px; visibility: hidden;">
      <span id="ext-gen1350" style="position: absolute; white-space: nowrap; font-family: " Lucida Grande ","Lucida Sans Unicode
      ",Verdana,Arial,Helvetica,sans-serif; font-size: 12px; color: rgb(51, 51, 51); margin-left: 0px; margin-top: 0px; left: 8px; top: 8px;" zindex="1">
    <span style="color:#000000">Index</span>
      <br/>
      <b>< 600</b>
      1532.6788418669355
      </span>
    </div>

    以下是我在收到一些反馈后尝试的其他事项。所有这些都返回空或元素未找到异常:

    var options = Driver.FindElements(By.XPath("//div[@class='highcharts-tooltip']//following::span"));
    
    var x = Driver.FindElement(By.CssSelector(".highcharts-tooltip")).GetAttribute("textContent");
    
    //var y = Driver.FindElement(By.XPath("//*[@class='highcharts-tooltip']//b")).GetAttribute("textContent");
    
    var z = Driver.FindElement(By.XPath("//*[@class='highcharts-tooltip']//span")).GetAttribute("textContent");
    
    z = Driver.FindElement(By.XPath("//*[@class='highcharts-tooltip']/span")).GetAttribute("textContent");
    
    z = Driver.FindElement(By.XPath("//*[@class='highcharts-tooltip']/span")).GetAttribute("text");
    
    **var a = Driver.FindElement(By.XPath("//*[@class='highcharts-tooltip']/span/text()"));** this xpath works in Firebug perfectly, but not using Webdriver...
    
    //var b = Driver.FindElements(By.XPath("//*[@class='highcharts-tooltip']/span/text()"));
    

2 个答案:

答案 0 :(得分:2)

由于您尝试访问的WebElement是隐藏的,getText()方法返回一个空字符串。

您尝试检索的文本也没有ID或标记,因此我们必须检索父文本。

Driver.FindElement(By.CssSelector(".highcharts-tooltip")).GetAttribute("textContent");

会给你,

Index

  < 600
  1532.6788418669355

您需要从上方检索您的值。

答案 1 :(得分:1)

好的,首先,

  1. 您共享的HTML具有可见性:隐藏,因此您无法在浏览器中看到它
  2. span id:看起来是由extjs框架自动生成的,所以你不应该使用它,否则它会在下次运行时中断。
  3. 在谷歌Chrome控制台中尝试此操作。 $ X( “// DIV [@类= 'highcharts-提示'] //以下::跨度/文本()”)[3]
  4. 它工作但令人惊讶地返回5个文本元素,没有尝试过使用selenium。 就这样做

    driver.findElement(by.xpath(“// div [@ class ='highcharts-tooltip'] // follow :: span”)。getText()并尝试。

    希望这会有所帮助,让我知道是否有效。

    谢谢, Manish Bansal http://www.softtechlabs.com/blog