gpt4 book ai didi

python - Selenium Python 无法定位元素

转载 作者:行者123 更新时间:2023-12-01 08:13:16 25 4
gpt4 key购买 nike

我正在尝试从此网页收集每种产品变体的价格信息:https://www.safetysign.com/products/7337/ez-pipe-marker

我在 Python 3 和 Windows 10 中使用 Selenium 和 FireFox。

这是我当前的代码:

driver = webdriver.Firefox()
driver.get('https://www.safetysign.com/products/7337/ez-pipe-marker')
#frame = driver.find_element_by_class_name('product-dual-holder')
# driver.switch_to.frame('skuer5c866ddb91611')
# driver.implicitly_wait(5)
driver.find_element_by_id('skuer5c866ddb91611-size-label-324').click()
price = driver.find_element_by_class_name("product-pricingnodecontent product-price-content").text.replace('$', '')
products.at[counter, 'safetysign.com Price'] = price
print(price)
print(products['safetysign.com URL'].count()-counter)

因此,我尝试首先按 id 选择第一个产品变体(我也尝试过类名)。但是,我收到“无法定位元素”错误。正如许多 SO 帖子中所建议的,我尝试更改框架(即使我在 html 中找不到包含此元素的框架标签)。我尝试使用索引、类名和我认为可能是框架的不同 div 元素的 id 切换到不同的框架,但这些都不起作用。我也尝试使用等待,但返回相同的错误。

知道我遗漏了什么或做错了什么吗?

最佳答案

要定位元素,您必须为 visibility_of_all_elements_ located() 引发 WebDriverWait,并且您可以创建一个 List 并对其进行迭代以 click() 每个项目,您可以使用以下解决方案:

  • 代码块:

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


    driver=webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
    driver.get("https://www.safetysign.com/products/7337/ez-pipe-marker")
    for product in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//form[@class='product-page-form']//div[@class='sku-contents']//following::ul[1]/li//label[starts-with(@for, 'skuer') and contains(., 'Pipe')]"))):
    WebDriverWait(driver, 20).until(EC.visibility_of(product)).click()
    driver.quit()

关于python - Selenium Python 无法定位元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55104730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com