擅长:python、mysql、java
<p>我想你可以把代码压缩成这样:</p>
<pre><code>prior = 0
while True:
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
current = len(WebDriverWait(self.driver, 30).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "x"))))
if current == prior:
return current
prior = current
</code></pre>
<p>我把所有相同的行都移到循环中,这就需要使循环成为一个<code>while True:</code>,并将条件检查移到循环中(因为不幸的是,Python缺少任何<code>do-while</code>)。</p>
<p>我还抛出了sleep和print语句——我不确定它们的目的是什么,但在我自己的页面上,我发现无论我是否在滚动条之间睡眠,加载的元素数量都是相同的。此外,在我自己的例子中,我不需要知道在任何时候的计数,我只需要知道它何时耗尽了列表(但是我添加了一个返回变量,以便您可以得到最终的计数,如果您碰巧需要它的话)。如果您真的想打印中间计数,可以在循环中分配当前计数后立即打印。</p>