Python Selenium - 计算列表框中的项目数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Selenium - 计算列表框中的项目数相关的知识,希望对你有一定的参考价值。
我正在尝试计算网页上列表框中的项目数,然后从此列表框中选择多个项目。我可以选择好的项目我正在努力找出如何计算列表框中的项目。
看代码:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
... ...
accountListBox = Select(driver.find_element_by_id("ctl00_MainContent_accountItemsListBox"))
accountListBox.select_by_index(0)
print(len(accountListBox))
我尝试使用len()导致错误“TypeError:类型的对象'Select'没有len()”。
我也试过了accountListBox.size(),并从第3行中删除了“选择”,这也是行不通的。
对此非常陌生,所以非常感谢您的反馈。
谢谢!
答案
根据docs,可以通过说select.options
获得Select元素选项的列表。在你的特殊情况下,这将是accountListBox.options
,你需要调用len()
,而不是Select
实例本身:
print(len(accountListBox.options))
或者,如果您只想打印当前所选选项的列表:
print(len(accountListBox.all_selected_options))
另一答案
您应该使用find_elements
为每个列表框的项目使用一些通用选择器来查找所有这些项目,将找到的元素存储到变量中,并使用本机python的库来计算它们。
另一答案
我经常使用Selenium和Beautiful Soup。 Beautiful Soup是一个用于解析HTML和XML文档的Python包。
使用Beautiful Soup,您可以通过以下方式获取列表框中的项目数:
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.PhantomJS() # or webdriver.Firefox()
driver.get('http://some-website.com/some-page/')
html = driver.page_source.encode('utf-8')
b = BeautifulSoup(html, 'lxml')
items = b.find_all('p', attrs={'id':'ctl00_MainContent_accountItemsListBox'})
print(len(items))
我假设您要查找的DOM元素是一个段落(p
标记),但您可以将其替换为您需要查找的任何元素。
以上是关于Python Selenium - 计算列表框中的项目数的主要内容,如果未能解决你的问题,请参考以下文章
RobotFramework Selenium:如何从多选下拉列表中选择多个选项?