首页 > 解决方案 > 用硒单击python中的元素

问题描述

我正在尝试创建一个机器人,将 4k 电视添加到我在 BestBuy 上的购物车中,以此来自学硒。我无法将我的“元素”变量与 BestBuy 网站上的按钮相关联。我一直在浏览一些论坛,但找不到有效的解决方案。我通过BestBuy 网站的 HTML 找到了该元素。

这是我认为在 chrome 中找到元素的图像: 百思买上的镀铬

这是我的python代码(请原谅我今天刚开始学习Selenium的代码草率):

from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)

driver.get("https://www.bestbuy.ca/en-ca/product/samsung-75-4k-uhd-hdr-led-tizen-smart-tv-un75tu6900fxzc-2020-titan-grey-only-at-best-buy/14930256")
while True:
    if ("Add to Cart" in driver.page_source):
        print("In stock")
        element = driver.find_element_by_id("button_2Xgu4 primary_oeAKs.addToCartButton_1DQ8z.addToCartButton.regular_cDhX6")
        element.click()
        break
    else:
        print("Not in stock")
    driver.get("https://www.bestbuy.ca/en-ca/product/samsung-75-4k-uhd-hdr-led-tizen-smart-tv-un75tu6900fxzc-2020-titan-grey-only-at-best-buy/14930256");
        
    
    

标签: pythonseleniumbots

解决方案


您使用find_element_by_id了 ,并且放置了类名而不是元素的 id。但是该元素没有任何 id,因此您必须使用find_element_by_class_nameor find_element_by_css_selector。我复制了您的代码并使用了类名。那没用,所以我使用了css选择器。这奏效了。

干得好:

element = driver.find_element_by_css_selector("div[class='addToCartLabel_1eyxz']")
element.click()

您可以在此处了解有关查找元素的更多信息。


推荐阅读