擅长:python、mysql、java
<p>有关获取Selenium标识符的任何尝试的问题,请参见my<a href="https://stackoverflow.com/a/25646401/1906307">other answer</a>。</p>
<p>同样,问题是减少一堆<code>find_element</code>调用,从而避免与它们相关联的往返。</p>
<p>与我的另一个答案不同的方法是使用<code>execute_script</code>在浏览器上执行搜索,然后返回所需的所有元素。例如,此代码需要三次往返,但可以减少为一次往返:</p>
<pre><code>el, parent, text = driver.execute_script("""
var el = document.querySelector(arguments[0]);
return [el, el.parentNode, el.textContent];
""", selector)
</code></pre>
<p>这将根据我希望传递的CSS选择器返回元素、元素的父元素和元素的文本内容。在页面加载了jQuery的情况下,我可以使用jQuery执行搜索。而且逻辑可以根据需要变得复杂。</p>
<p>这种方法处理了绝大多数需要减少往返次数的情况,但它并没有考虑到我在另一个答案中所给出的那种情况。</p>