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

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

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

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

【问题讨论】:

    标签: python selenium xpath css-selectors classname


    【解决方案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 您可以使用以下任一 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
      

    结尾

    链接到有用的文档:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 2017-11-21
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 2018-01-25
      • 1970-01-01
      相关资源
      最近更新 更多