【问题标题】:Selenium WebDriver -- get <span> textSelenium WebDriver -- 获取 <span> 文本
【发布时间】:2019-05-20 03:48:22
【问题描述】:

我需要从以下位置获取价值 $726.35 的价格:

<span id="paiement-resultats"class="calculateur-resultats-total" style="" xpath="1">$726.35</span>

但它不起作用:

driver.findElement(By.id("paiement-resultats")).getText()

我怎样才能得到这个值?

浏览器截图:

【问题讨论】:

  • 在这种情况下你不需要@。试试driver.findElement(By.id("paiement-resultats")).getText()
  • @Andersson 从你的编辑来看,我可以看到你有一些“russkii klaviatura”:)
  • @alecxe ,是的,抱歉,没有注意选择的键盘布局 :))
  • 作为Andersson回复的补充,如果您有其他选择,我建议不要使用xpath。有关更多信息,请参阅此帖子:stackoverflow.com/questions/27355003/…
  • @kery 可以分享网页链接吗?使用 jQuery 在 JS 控制台中检查会更快,如果可行,您可以使用 selenium 的 browser.execute_script 来执行 jQuery

标签: java selenium xpath css-selectors webdriver


【解决方案1】:

由于元素位于&lt;span&gt; 标记内,要提取文本$726.35,您可以使用以下任一解决方案:

  • cssSelector:

    driver.findElement(By.cssSelector("span.calculateur-resultats-total#paiement-resultats")).getText();
    
  • xpath:

    driver.findElement(By.xpath("//span[@class='calculateur-resultats-total' and @id='paiement-resultats']")).getText();
    

更新

由于结果不稳定,您可以为 visibilityOfElementLocated 引入 WebDriverWait,您可以使用以下任一解决方案:

  • cssSelector:

    String myText = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("table[aria-label='User']"))).getAttribute("innerHTML");
    
  • xpath:

    String myText = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//table[contains(@style,'vertbar')]"))).getAttribute("innerHTML");
    

【讨论】:

  • @kery 查看我的更新答案并告诉我状态。
  • 是的,它有效) String myText = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@class='calculateur-resultats-total' 和@id='paiement-resultats']"))).getAttribute("innerHTML");谢谢
【解决方案2】:

干杯! 我找到了解决办法

driver.findElement(By.xpath("//span[@class='calculateur-resultats-total' and contains(text(),'$')]")).getText();

【讨论】:

  • contains(text(),'$') 然后getText()?
【解决方案3】:

试试这个,

下面我提到了两个 Xpath 尝试一下,如果不起作用,请告诉我

//div[@id='resultats']//following::span[@id='paiement-resultats']
//div[@id='resultats']//following::span[@class='calculateur-resultats-total']

driver.findElement(By.xpath("//h2[@class='resultats']//following::span[@id='paiement-resultats']")).getText()

【讨论】:

  • 不幸的是没有((在两种情况下都返回空字符串
  • 现在试试,我已经更新了 Xpath。现在也不工作意味着让我知道! @kery
猜你喜欢
  • 2013-10-14
  • 2015-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
  • 2020-01-17
相关资源
最近更新 更多