【问题标题】:Selenium and Chromedriver - Can't click elementSelenium 和 Chromedriver - 无法点击元素
【发布时间】:2018-06-03 01:41:04
【问题描述】:

我正在尝试使用 selenium 和 Chromedriver 单击网站上的元素。对于其他元素,我可以通过使用它们的相对 Xpath 来单击。但是,当我尝试复制新元素的 xpath 时,它会复制 Absolute Xpath,这给了我一个错误。

我要访问的部分是:

<div class="tile transferMarketTile">
  <div class="loadingSpinner"></div>
  <header>
    <h1 class="tileHeader">Search the Transfer Market</h1>
  </header>
  <div class="tileContent"></div>
  <div class="tileDisabled" style="display: none;">
    <div class="textField tileDisabledMessage"></div>
  </div>
</div>

到目前为止,我已经尝试使用以下方法单击元素:

WebElement element = driver.findElement(By.xpath("/html/body/section/article/div[1]/div[2]"));
        transfers.click();

我正在使用我使用 Chrome 扩展程序找到的相对 xpath,但这也不起作用。

我想知道是否有办法解决这个问题。感谢您提供任何帮助,并提前感谢您。

【问题讨论】:

  • 您尝试点击哪个元素?
  • 对不起,我没有说清楚!这是“搜索转会市场”
  • 好的。 UI中“搜索转会市场”是否可点击?

标签: selenium selenium-webdriver


【解决方案1】:

您可以通过以下方式选择网页元素,

您可以先选择唯一的父标签,然后直接访问所需的标签

driver.findElement(By.xpath("//div[contains(@class,'transferMarketTile')]/.//h1")).click();

如果可见文本在页面中是唯一的,那么您可以使用 Xpath 中的 text() 选项

 driver.findElement(By.xpath("//*[text()='Search the Transfer Market']")).click();

【讨论】:

  • 我尝试输入建议的代码并收到此错误消息:线程“main”中的异常 org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{“method”:” xpath","selector":"//div[contains(@class,'transferMarketTile')]/.//h1"}
  • 我也尝试了另一行,得到了类似的错误
  • 该元素在框架内是否可用?
  • 对不起,我不确定你的意思。虽然您可以手动单击该元素,如果这回答了您的问题。
  • 检查上述特定元素,然后在元素页面中使用 iframe 进行搜索。如果找到任何 iframe,则检查它是否是所需元素标签的父标签。如果没有找到 iframe 标签,则需要在执行此操作之前添加一些显式等待。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多