Selenium Python:选择 class 中的所有项目并将它们放入列表中?
Selenium Python: Selecting all items in a class and putting them into a list?
有没有办法把某个class的所有元素放到一个列表中?例如:
<li class="Fruit">Apple</li>
<li class="Fruit">Orange</li>
我想将 Apple 和 Orange 放入列表中。
driver.find_elements_by_class_name("Fruit")
查找元素 returns 符合给定条件的所有元素,此处为 class 名称,它 returns 列表
您可以将文本打印为:
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]
提取并打印文本,例如Apple、Orange 等来自所有 <li class="Fruit">
使用 and python you can use either of the following :
使用class_name
和get_attribute("textContent")
:
print([my_elem.get_attribute("textContent") for my_elem in driver.find_elements_by_class_name("Fruit")])
使用css_selector
和get_attribute("innerHTML")
:
print([my_elem.get_attribute("innerHTML") for my_elem in driver.find_elements_by_css_selector(".Fruit")])
使用 xpath
和 text 属性:
print([my_elem.text for my_elem in driver.find_elements_by_xpath("//*[@class='Fruit']")])
理想情况下你需要诱导 for visibility_of_all_elements_located()
and you can use either of the following :
使用CLASS_NAME
和get_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_SELECTOR
和get_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")))])
使用 XPATH
和 text 属性:
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
结尾
Link 到有用的文档:
get_attribute()
方法Gets the given attribute or property of the element.
text
属性returnsThe text of the element.
- Difference between text and innerHTML using Selenium
有没有办法把某个class的所有元素放到一个列表中?例如:
<li class="Fruit">Apple</li>
<li class="Fruit">Orange</li>
我想将 Apple 和 Orange 放入列表中。
driver.find_elements_by_class_name("Fruit")
查找元素 returns 符合给定条件的所有元素,此处为 class 名称,它 returns 列表
您可以将文本打印为:
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]
提取并打印文本,例如Apple、Orange 等来自所有 <li class="Fruit">
使用
使用
class_name
和get_attribute("textContent")
:print([my_elem.get_attribute("textContent") for my_elem in driver.find_elements_by_class_name("Fruit")])
使用
css_selector
和get_attribute("innerHTML")
:print([my_elem.get_attribute("innerHTML") for my_elem in driver.find_elements_by_css_selector(".Fruit")])
使用
xpath
和 text 属性:print([my_elem.text for my_elem in driver.find_elements_by_xpath("//*[@class='Fruit']")])
理想情况下你需要诱导 visibility_of_all_elements_located()
and you can use either of the following
使用
CLASS_NAME
和get_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_SELECTOR
和get_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")))])
使用
XPATH
和 text 属性: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
结尾
Link 到有用的文档:
get_attribute()
方法Gets the given attribute or property of the element.
text
属性returnsThe text of the element.
- Difference between text and innerHTML using Selenium