<p>这个问题已经在许多论坛上被提出和回答,包括<strong><code>stackoverflow.com</code></strong>和其他不同形式的论坛。考虑到所有这些因素,如果我们对定位器进行优先排序,列表如下:</p>
<ul>
<li><strong><code>id</code></strong>:选择具有指定<code>id</code>属性的元素。你知道吗</li>
<li><strong><code>name</code></strong>:选择具有指定<code>name</code>属性的第一个元素。你知道吗</li>
<li><strong><code>link_text</code></strong>:选择包含与指定的<code>Link Text</code>匹配的<code>Text</code>的链接(锚定标记)元素。你知道吗</li>
<li><strong><code>partial_link_text</code></strong>:选择包含与指定的<code>Partial Link Text</code>匹配的<code>Text</code>的链接(锚定标记)元素。你知道吗</li>
<li><strong><code>tag_name</code></strong>:使用<code>Tag Name</code>定位元素。你知道吗</li>
<li><strong><code>class_name</code></strong>:使用<code>Class Name</code>定位元素。你知道吗</li>
<li><strong><code>css_selector</code></strong>:使用<code>css selectors</code>选择元素。你知道吗</li>
<li><strong><code>xpath</code></strong>:使用<code>XPath</code>表达式定位元素。你知道吗</li>
</ul>
<p>所以现在的问题是什么是新的?你知道吗</p>
<p>答案是硒最近进化了很多。<strong><code>WebDriver</code></strong>现在是<a href="https://www.w3.org/TR/webdriver/" rel="nofollow noreferrer"><strong>^{<cd21>}</strong></a>。在<code>Selenium</code>内的事物变化非常快。不仅仅是选择定位器。我们需要使用一个定位器,它将:</p>
<ul>
<li><strong><code>Uniquely identify an element.</code></strong></li>
<li><strong><code>The performance of the locator must be optimized.</code></strong></li>
</ul>
<p>记住这两个因素,最好的策略是模拟DOM。<a href="https://www.w3.org/TR/webdriver/#locator-strategies" rel="nofollow noreferrer"><strong>^{<cd21>}</strong></a>确实提到了定位器列表,如下所示:</p>
<p><a href="https://i.stack.imgur.com/ZTq7X.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ZTq7X.png" alt="Selenium_Locators"/></a></p>
<p>所以判决是明确和简洁的。你知道吗</p>