【问题标题】:selenium count divs inside one div一个 div 内的硒计数 div
【发布时间】:2022-01-22 17:16:12
【问题描述】:

我想用 selenium 计算一个 div 中的 div。

到目前为止,这是我的代码,但我不明白为什么这不起作用。它返回长度为 0。

available = len(browser.find_elements_by_xpath("//div[@class='sc-AykKC.sc-AykKD.slug__RaffleContainer-sc-10kq7ov-2.eujCnV']/div"))

【问题讨论】:

  • 您能否在问题中包含 HTML sn-p 作为代码?

标签: python html selenium xpath webdriver


【解决方案1】:

要使用 Selenium 在其父 <div> 中将具有 alt 属性值的 <div> 标记计为 Closed,您可以使用以下任一 基于Locator Strategies:

  • 使用text()

    available = len(browser.find_elements_by_xpath("//h2[text()='List']//preceding::div[1]//div[@alt='Closed']"))
    
  • 使用contains()

    available = len(browser.find_elements_by_xpath("//h2[contains(., 'List')]//preceding::div[1]//div[@alt='Closed']"))
    

理想情况下,您必须为visibility_of_all_elements_located() 诱导WebDriverWait,并且您可以使用以下任一定位器策略

  • 使用text()

    available = len(WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//h2[text()='List']//preceding::div[1]//div[@alt='Closed']"))))
    
  • 使用contains():

    available = len(WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//h2[contains(., 'List')]//preceding::div[1]//div[@alt='Closed']"))))
    
  • 注意:您必须添加以下导入:

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

【讨论】:

    【解决方案2】:

    你可以试试这个

    div = d.find_element(By.XPATH, '//div[@class='sc-AykKC.sc-AykKD.slug__RaffleContainer-sc-10kq7ov-2.eujCnV']')
    
    res = list(div.find_elements(By.TAG_NAME, 'div'))
    
    print(len(res))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2016-10-28
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多