对于下面的 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']")
@FindBy(css ="input.btn.green-btn.save_search_btn[value='Search']")
您可以查看this和 this并在网上搜索更多引用资料,然后选择最适合您的引用资料。
关于selenium-webdriver - 有没有更好的方法来定位以下 HTML 代码的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56060154/