Selenium Python:选择一个类中的所有项目并将它们放入列表中?

Posted

技术标签:

【中文标题】Selenium Python:选择一个类中的所有项目并将它们放入列表中?【英文标题】:Selenium Python: Selecting all items in a class and putting them into a list? 【发布时间】:2021-03-20 10:10:36 【问题描述】:

有什么方法可以获取某个类的所有元素并放入一个列表中?例如:

<li class="Fruit">Apple</li>
<li class="Fruit">Orange</li>

我想把 AppleOrange 放在一个列表中。

【问题讨论】:

【参考方案1】:
  driver.find_elements_by_class_name("Fruit")

查找元素返回给定条件的所有元素,这里是类名,它返回列表

您可以将文本打印为:

https://selenium-python.readthedocs.io/locating-elements.html

elems = driver.find_elements_by_class_name("Fruit")
for elem in elems:
    print(elem.text)

elemsText = [i.text for i in driver.find_elements_by_class_name("Fruit")]
print(elemsText]

【讨论】:

如果我将它分配给一个变量并打印它说 [ 我想让它打印元素内的项目。有什么办法吗? @TheBotlyNoob 它是一个 webelement 数组,你想在其中打印什么? 添加了 forloop 以对其进行迭代并打印文本【参考方案2】:

提取和打印文本,例如AppleOrange 等来自所有 &lt;li class="Fruit"&gt; 使用 Selenium 和 python 您可以使用以下任一 Locator Strategies:

使用class_nameget_attribute("textContent")

print([my_elem.get_attribute("textContent") for my_elem in driver.find_elements_by_class_name("Fruit")])

使用css_selectorget_attribute("innerHTML")

print([my_elem.get_attribute("innerHTML") for my_elem in driver.find_elements_by_css_selector(".Fruit")])

使用xpathtext属性:

print([my_elem.text for my_elem in driver.find_elements_by_xpath("//*[@class='Fruit']")])

理想情况下,您需要为visibility_of_all_elements_located() 诱导WebDriverWait,您可以使用以下任一Locator Strategies:

使用CLASS_NAMEget_attribute("textContent")

print([my_elem.get_attribute("textContent") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "Fruit")))])

使用CSS_SELECTORget_attribute("innerHTML")

print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".Fruit")))])

使用XPATHtext属性:

print([my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//*[@class='Fruit']")))])

注意:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

结尾

链接到有用的文档:

get_attribute() 方法 Gets the given attribute or property of the element. text 属性返回 The text of the element. Difference between text and innerHTML using Selenium

【讨论】:

以上是关于Selenium Python:选择一个类中的所有项目并将它们放入列表中?的主要内容,如果未能解决你的问题,请参考以下文章

Python Selenium - 灵活列表中的所有选项

如何使用 selenium webdriver (python) 选择、复制和粘贴元素中的所有内容

使用 Python selenium 选择一个元素(文本)

python selenium都在一个会话浏览器中进行测试

如何使用 Selenium 和 Python 在类中执行方法

如何使用 Selenium 和 Python 在 Python 类中调用方法