selenium-webdriver - 有没有更好的方法来定位以下 HTML 代码的元素?

标签 selenium-webdriver xpath

对于下面的 HTML 代码:

<div class="advcd_fields form">

other <div> and <p> elements...

   <p><input type="text" class="field" name="" placeholder="Company"></p>
   <p class="submit_btns"> 
      <input type="submit" class="btn" name="" value="Search">
      <input type="submit" class="btn green-btn save_search_btn" name="" value="Save search">
      <input type="submit" class="btn cancel-btn s_close" name="" value="Cancel">
   </p>
</div>

我为 p 组元素创建了 xpath 定位器

@FindBy(xpath="//div[@class=\"advcd_fields form\"]//p//input[@value=\"Search\"]")

@FindBy(xpath="//div[@class=\"advcd_fields form\"]//p//input[@value=\"Save search\"]")

@FindBy(xpath="//div[@class=\"advcd_fields form\"]//p//input[@value=\"Cancel\"]")

我的问题:

1.
这对我有用。我想知道这是否是识别 p 下 3 个元素的正确方法?

2.
有没有更好/更短的方法来定位这三个元素?

3.
这是“公司”元素。

@FindBy(xpath="//div[@class=\"advcd_fields form\"]//p//input[@placeholder=\"Company\"]")

谢谢!

最佳答案

如果它对你有用,那是个好消息。但做事总是有多种方法。

  • 由于<input>元素是 <p> 的直接子元素您不需要双斜杠( // )的元素,单斜杠( / )就足够了。
  • 如果没有其他<p>具有类 submit_btns 的元素那么你可以丢弃 <div>从 XPath 中直接搜索 <p>元素。像这样,

  • @FindBy(xpath="//p['submit_btns']/input[@value='Search']")
    
  • 您甚至可以直接搜索 <input>假设没有其他 <input> 的元素具有相同类或值的元素。

  • @FindBy(xpath="//input[@value='Search'][@class='btn green-btn save_search_btn']")
    
  • 您可以使用 CSS 选择器:

  • @FindBy(css ="input.btn.green-btn.save_search_btn[value='Search']")
    

    您可以查看thisthis并在网上搜索更多引用资料,然后选择最适合您的引用资料。

    关于selenium-webdriver - 有没有更好的方法来定位以下 HTML 代码的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56060154/

    相关文章:

    java - OAI Jaxen XPath 问题

    xpath - 连接多个属性值

    xml - XPath:仅当所有子节点都具有特定值时才获取父节点的属性

    java - 用于从 AWIS (Alexa.com) XML 数据中提取信息的 XPath 表达式

    javascript - 如何使用 setAttribute 方法和 Python 中的 Selenium 更改 Datepicker 的隐藏元素的日期?

    c# - jwplayer getDuration 在 chrome 控制台中有效,但在 C# 中与 IJavaScriptExecutor 无效

    python - 使用 selenium (python) 选择满足条件的所有元素

    javascript - 无法再在 Chrome 中打开和关闭标签页

    Python Web Scraping title in a special div & Page 1 + 15

    java - Selenium、Firefox 和 GeckoDriver