【问题标题】:Count the number of elements found in selenium python计算在 selenium python 中找到的元素数量
【发布时间】:2015-03-03 12:20:33
【问题描述】:

我有以下 html 页面,我试图在其中找到单词 silver 并继续计算找到了多少。

这里只显示了两个,但它可以产生更多,所以我不知道确切的数量。

<tr id="au_4" class="odd">
<td>Silver</td>
</tr>
<tr id="au_4" class="even">
<td>Silver</td>
</tr>

这是我尝试过的,但没有运气:

count =  driver.find_elements_by_xpath("//td[text()='Silver']")

【问题讨论】:

  • 你可以试试len(re.findall("silver",your_string,re.I))
  • @Hackaholic 这不是字符串,OP 正在尝试在 HTML 文件中定位元素。
  • @MarounMaroun 整个 HTML 可以当作字符串
  • @Hackaholic 确实,但我几乎可以肯定 OP 已经与网络驱动程序建立了连接,而不是直接与字符串通信。
  • @MarounMaroun 是的,我对硒不太了解

标签: python selenium


【解决方案1】:

count 是找到的所有元素的列表。为了找到它的长度,你应该:

len(count)

我强烈建议您阅读docs 以更好地了解 Selenium 的工作原理。

【讨论】:

  • 谢谢你实际上我的代码工作了我所要做的就是 len,python 的问题有时是给出的错误并没有清楚地表明出了什么问题,而且我真的很陌生。我只是不明白为什么这个问题得到了反对票,对我来说似乎是一个合法的问题,这不是这个地方的用途吗?
  • @Nro 我很高兴它有帮助。我建议您通过hep center 更好地了解 Stack Overflow 的工作原理。我们希望对正在解决的问题有最少的了解,也许人们会投反对票,因为他们希望至少你知道你正在使用的功能是做什么的。无论如何,我看到一个问得很好的问题,会投赞成票。
【解决方案2】:

通过execute_script 检索计数然后从find_elements_by 方法调用的结果中获取len 会更快:

script = "return $(\"td:contains('{}')\").length".format(text="Silver")
count = driver.execute_script(script)

上面的示例适合你如果你使用jQuery,另一种通过文本值检索元素的方法可以在How to get element by innerText SO question中找到......

【讨论】:

    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 2021-12-17
    • 2018-11-07
    相关资源
    最近更新 更多