【问题标题】:How to get the right Xpath for the <li> HTML element?如何为 <li> HTML 元素获取正确的 Xpath?
【发布时间】:2019-09-12 12:21:50
【问题描述】:

我应该让Selenium 使用JavaInteliji 单击下拉菜单的元素。我应该点击“today”按钮。我试图复制xpath,使用cssselector,我使用了xpath finder等扩展名,没有结果。元素是&lt;li&gt; 类型,所以我想问题就在这里。有什么建议如何找到正确的Xpath? 附言抱歉上传图片,作为新用户,我无法将它们准确地放在文本中。 Drop down menu image html code for the elements

【问题讨论】:

  • 发布实际代码,而不是您尝试过的描述。您还应该发布您收到的错误消息/异常并将 html 作为文本发布(您可以这样做,即使是作为新用户。它只是一个文本,就像您的问题的其余部分一样)。
  • 你的 Xpath 可以是这样的...... - './/div[@class="ranges"]//div[contains(@class, "active")] ]'
  • @krsna 谢谢,我试过了,没有结果
  • 请参阅:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享该研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask
  • 错误是找不到元素

标签: java html selenium xpath css-selectors


【解决方案1】:

您不能总是从浏览器的工具中获得可重用的硒 XPath 定位器。它返回一个绝对 XPath。您需要为元素构造相对 XPath。

Here 您可以了解 XPath 以及 XPath 定位器的工作原理。

以下定位器基于您发布的图片。

XPath:

WebElement liToday = driver.findElement(By.xpath("//div[contains(@class,'daterangepicker') and contains(@class,'dropdown-menu')]/div[@class='ranges']/ul/li[text()='Today']"));

CSS 选择器:

WebElement liToday = driver.findElement(By.cssSelector("div.daterangepicker.dropdown-menu > div.ranges > ul > li"));

定位元素后,
这部分是在您单击日期框并显示下拉列表之后。

new WebDriverWait(driver,30).until(ExpectedConditions.visibilityOf(liToday));
liToday.click();

【讨论】:

  • 非常感谢,其实我已经解决了这个问题,但是你的信息对我帮助很大
  • 很高兴听到。出了什么问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-10
  • 2022-12-30
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多