【问题标题】:Selenium FindElement by parent divSelenium FindElement 按父 div
【发布时间】:2018-10-05 20:53:13
【问题描述】:

试图找到“a href”的链接元素。片段代码:

<div id="contact-link">
    <a href="http://automationpractice.com/index.php?controller=contact" title="Contact Us">Contact us</a>
</div>

我设法做到了:

  1. Driver.FindElement(By.XPath("//*[@title='Contact Us']")).Click();

2.Driver.FindElement(By.XPath("//a[@href='http://automationpractice.com/index.php?controller=contact']")).Click();

3.Driver.FindElement(By.XPath("//*[text()='Contact us']")).Click();

有人能告诉我如何通过首先获取 parent div 然后找到该 div 里面的内容(从上到下)

【问题讨论】:

  • 你能详细说明你的意思是什么我怎么能先得到父div然后找到里面的东西

标签: selenium selenium-webdriver


【解决方案1】:

所以基本上,使用 xpath,您正在寻找复制 HTML 结构。你需要的是:

//div[@id='contact-link']/a

这将返回 div 下的 a href。假设它只有1,那就是要走的路。如果您想更进一步,请尝试:

//div[@id='contact-link']/a[@title='Contact Us']

【讨论】:

  • 正是我想要的!谢谢你:)
【解决方案2】:

虽然您已经接受了答案,但我想强调一下关于 Xpath 和 cssSelector 的一些要点。你应该总是选择 cssSelector 而不是 Xpath

这是满足您要求的 cssSelector

div[id='contact-link']>a

代码:

Driver.FindElement(By.CssSelector("div[id='contact-link']>a")).Click();

有关 cssSelector 的更多信息:https://www.w3schools.com/cssref/css_selectors.asp 对于 Xpath 和 cssSelector 之间的区别,您可以从这篇 SO 帖子中阅读:Diff between Xpath and cssSelector

【讨论】:

  • 没问题@Ixi11 :)
猜你喜欢
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多