<p>如果找不到前面有许多同级的元素,则可以使用相邻的同级选择器。
在下面的示例中,为第二个排序项选择一个定位器:</p>
<pre><code>css= ol > li:first-child + li
</code></pre>
<p>可以考虑创建的一个关键字是Assign Id To Nth Element。
它与Assign Id To Element相同,只是Id被分配给元素集合中使用给定定位器返回的第n个元素。
这将允许您在不修改selenium2库的情况下使用其他关键字<strong>。
例如:</p>
^{pr2}$
<p>这将使选择一个有许多兄弟姐妹的孩子更容易。
对于相邻的兄弟选择器,在这种情况下选择器将非常大,因为第n个子对象在CSS3之前不可用。在</p>
<p>下面是Assign Id To Nth Element的实现:</p>
<pre><code>from robot.libraries.BuiltIn import BuiltIn
class S2LExt(object):
def assign_id_to_nth_element(self, locator, id, n):
"""Assigns a temporary identifier to the Nth element found.
This is mainly useful if the locator is complicated/slow XPath expression.
Identifier expires when the page is reloaded. `n` is 1-based index of the
element in the set found with the given `locator` to assign an ID to.
Example:
| Assign ID to Nth Element | xpath=//div[@id="first_div"] | my id | 5 |
| Page Should Contain Element | my id |
"""
lib = BuiltIn().get_library_instance('Selenium2Library')
n = int(n)
elements = lib._element_find(locator, False, True)
if len(elements) < n:
raise IndexError("Only %d elements found using locator '%s'." % (len(elements), locator))
lib._info("Assigning temporary id '%s' to element '%s'" % (id, locator))
lib._current_browser().execute_script("arguments[0].id = '%s';" % id, elements[n-1])
</code></pre>