当前位置: 首页 > 知识库问答 >
问题:

你能帮我用Selenium点击添加到购物车按钮吗?

华欣怡
2023-03-14

我正在尝试做一个教程,学习python中的Selenium,但是我似乎无法让Selenium使用find_element_by_class或find_element_by_xpath单击“Add to Cart”按钮。问题是检查项目是否缺货,如果缺货则刷新网页并重新启动脚本。如果物料有库存,则应单击“添加到购物车”。

我正在使用:

Python v3.9

Chrome v87

# Selenium Tutorial #1

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains

import time

driver = webdriver.Chrome(r"C:\Users\Ste1337\Desktop\chromedriver\chromedriver.exe")

driver.get("https://www.currys.co.uk/gbuk/tv-and-home-entertainment/televisions/televisions/samsung-ue75tu7020kxxu-75-smart-4k-ultra-hd-hdr-led-tv-10213562-pdt.html")

#search = driver.find_element_by_id(ContentPlaceHolder1_NotifyBtn)

link = driver.find_element_by_id("onetrust-accept-btn-handler")
link.click

try:
    element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "onetrust-accept-btn-handler"))
    )
    element.click()
except Exception:
    pass

driver.implicitly_wait(2)

try:
    element = WebDriverWait(driver, 1).until(
    EC.presence_of_element_located((By.XPATH, "email-desktop"))
    )
    time.sleep(1)
    browser.refresh()
except:
    driver.find_element_by_class_name("Button__StyledButton-bvTPUF hZIOeU Button-jyKNMA GZkwS")
    link.click()

共有1个答案

隆宏爽
2023-03-14

不能将多个类传递给find_element_by_class_name。而是使用driver.find_element_by_css_selectorxpath

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains

import time

driver = webdriver.Chrome(r"C:\Users\Frank\Documents\Python Scripts\chromedriver_win32\chromedriver.exe")

driver.get("https://www.currys.co.uk/gbuk/tv-and-home-entertainment/televisions/televisions/samsung-ue75tu7020kxxu-75-smart-4k-ultra-hd-hdr-led-tv-10213562-pdt.html")

#search = driver.find_element_by_id(ContentPlaceHolder1_NotifyBtn)

try:
    element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "onetrust-accept-btn-handler"))
    )
    element.click()
except Exception:
    pass

driver.implicitly_wait(2)

try:
    element = WebDriverWait(driver, 1).until(
    EC.presence_of_element_located((By.XPATH, "email-desktop"))
    )
    time.sleep(5)
    driver.refresh()
except:
    button = driver.find_element_by_css_selector("button.Button__StyledButton-bvTPUF.hZIOeU.Button-jyKNMA.GZkwS")

接下来,如果调用button.is_display(),它将返回false,因为它是一个隐藏元素。这意味着您不能使用button.click()与其交互。相反,您可以使用javascript单击按钮。

driver.execute_script("arguments[0].click();", button)
 类似资料:
  • 问题内容: 单击后,我想重新标记“ 添加到购物车” 按钮,然后将一项添加到购物车, 再添加到购物车中 。 这可能吗? 我有第二个 转到购物车* 按钮的Child-Theme function.php ,并且它正在工作。 * 但是我不知道在将一件商品添加到购物车后如何解决此重新标签问题(商店仅出售一件尺寸不同的商品)。我希望我很清楚。 这是我的代码: 问题答案: 更新: 在下面,您将找到使此重新标记

  • 我想在单个产品页面中向“添加到购物车”按钮显示产品价值(版本) 我找到了必须编辑的文件:woocommerce\templates\single-product\add-to-cart\external.php 但现在我的“添加到购物车”按钮上什么也没有显示

  • 我使用woocommerce插件创建了一个电子商务。我只出售订阅,因此“/cart/”页面没有用处。我试图摆脱它,这样当我的客户点击“添加到购物车”按钮时,他就会出现在结帐页面上。

  • 如何更改代码以使其只适用于已定义的产品类别?

  • 勾选了复选框的产品实际上是不可购买的,这是期望的结果。 我遇到的问题是,当我在产品目录页面上为可购买的产品(那些没有勾选的)点击“添加到购物车”时,我被重定向到产品页面,并且默认的WooCommerce消息“对不起,这个产品不能被购买。”出现。应该发生的是,当单击“添加到购物车”按钮时,产品会自动添加到购物车中。 同样从单品页面,我可以毫无问题地添加可购推车。

  • 我使用“从Woocommerce中的functions.php文件中添加到购物车按钮上显示价格”的答案代码,在简单的产品中添加价格。 但我想改进这个功能,动态显示选择的变异价格内按钮。在变体产品页面上使用此代码,它只显示最低的价格。有什么解决办法吗?