<p><code>find_element_by_xpath()</code>将返回单个元素,当您使用<em>FireFox</em>时,将返回第一个匹配的<a href="https://stackoverflow.com/questions/52782684/what-is-the-difference-between-webdriver-and-webelement-in-selenium/52805139#52805139">WebElement</a>,它可以传递给<code>len()</code>。因此,您会看到错误:</p>
<pre><code>TypeError: object of type 'FirefoxWebElement' has no len()
</code></pre>
<p>因此,您需要使用<code>find_elements_by_xpath()</code>而不是<code>find_element_by_xpath()</code>,它将返回一个<em>列表</em></p>
<hr/>
<p>理想情况下,要使用<a href="https://stackoverflow.com/questions/54459701/what-is-selenium-and-what-is-webdriver/54482491#54482491">Selenium</a>和Python提取js表中的行数,您必须为<code>visibility_of_all_elements_located()</code>引入<em>WebDriverWait</em>,并且可以使用以下任一解决方案:</p>
<ul>
<li><p>使用<code>XPATH</code>:</p>
<pre><code>print(len(WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//table[@id='SheetContentPlaceHolder_GridView1']/tbody/tr")))))
</code></pre></li>
<li><p><strong>注意</strong>:您必须添加以下导入:</p>
<pre><code>from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
</code></pre></li>
</ul>