python - 用硒单击python中的元素
问题描述
我正在尝试创建一个机器人,将 4k 电视添加到我在 BestBuy 上的购物车中,以此来自学硒。我无法将我的“元素”变量与 BestBuy 网站上的按钮相关联。我一直在浏览一些论坛,但找不到有效的解决方案。我通过BestBuy 网站的 HTML 找到了该元素。
这是我的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");
解决方案
您使用find_element_by_id
了 ,并且放置了类名而不是元素的 id。但是该元素没有任何 id,因此您必须使用find_element_by_class_name
or find_element_by_css_selector
。我复制了您的代码并使用了类名。那没用,所以我使用了css选择器。这奏效了。
干得好:
element = driver.find_element_by_css_selector("div[class='addToCartLabel_1eyxz']")
element.click()
您可以在此处了解有关查找元素的更多信息。
推荐阅读
- php - why not find model file in app folder and migration folder in laravel
- tkinter - 当滚动条位于用户接近一半的位置时,如何自动获取滚动条的位置,以便它可以调用其他函数?
- java - Jax-rx Starter Maven project showing error HTTP Status 404 – Not Found
- asp.net - ASP.NET Web API : JsonIgnore attribute only for set or get
- visual-studio - 从模板 Visual Studio 创建 Blazor(ASP.NET Core 托管)项目
- c++ - 编译器找不到SFML/Graphics.hpp,但是添加到includedirs
- android - Activity 销毁时,应用程序会继续上传到 Firebase 存储
- java - 如何使用 HTML 颜色编写带有 zxing 的二维码
- windows-terminal - Windows 终端预览 - 滚动浏览标签?
- sql - 我如何避免分组中的重复值?