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>

我想将 AppleOrange 放入列表中。

  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]

提取并打印文本,例如AppleOrange 等来自所有 <li class="Fruit"> 使用 and you can use either of the following :

  • 使用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']")])
    

理想情况下你需要诱导 for visibility_of_all_elements_located() and you can use either of the following :

  • 使用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
    

结尾

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