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

Python中的硒无法在Amazon/Flipkart上找到添加到购物车元素

裴华荣
2023-03-14

我是新手,试图通过在flipkart网站上搜索来制作第一个自动化测试用例,然后搜索手机并单击特定的手机,然后添加到购物车,但它不起作用,得到这个错误硒.common.exceptions.ElementClickInterceptedException:消息:元素点击拦截:元素...在点 (728, 232) 处不可点击。并尝试通过查找css选择器/ xpath / id /名称,它们都没有工作,但当我使用get方法调用dirct链接页面时,它的工作原理。任何帮助将不胜感激。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from time import sleep

driver = webdriver.Chrome('/usr/local/bin/chromedriver')
driver.get("https://www.flipkart.com/")
sleep(1)

print(" site title : "+driver.title)
btn=driver.find_element_by_xpath('//*[@class="_2KpZ6l _2doB4z"]')
btn.click()

search_bar = driver.find_element_by_name("q")
search_bar.clear()
search_bar.send_keys("mobiles")
search_bar.send_keys(Keys.RETURN)
print(" listing page ::")
sleep(1)

a_link = driver.find_element_by_xpath('//*[@id="container"]/div/div[3]/div[1]/div[2]/div[2]/div/div/div/a/div[2]/div[1]/div[1]')
a_link.click()
print(" main page : ")
sleep(3)

cart = driver.find_element_by_xpath('//*[@id="container"]/div/div[3]/div[1]/div[1]/div[2]/div/ul/li[1]/buttons')
cart.click()

共有1个答案

尉迟跃
2023-03-14

这里有几个问题:

  1. 您应该使用webdriverwait预期条件的显式等待,而不是硬编码睡眠
  2. 不应使用自动生成的定位器,如/*[@id=“container”]/div/div[3]/div[1]/div[2]/divs[2]/divs/div/div/a/div[2]/div[1]/div[1]
  3. 点击搜索结果链接<code>a_link。单击()打开新窗口。你需要在那里切换
    在所有这些更改之后,您的代码应该是这样的,我希望它能更好地工作:
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 time import sleep

driver = webdriver.Chrome('/usr/local/bin/chromedriver')
wait = WebDriverWait(driver, 20)

driver.get("https://www.flipkart.com/")
sleep(1)

print(" site title : "+driver.title)
wait.until(EC.visibility_of_element_located((By.XPATH, "//*[@class="_2KpZ6l _2doB4z"]"))).click()

search_bar = wait.until(EC.visibility_of_element_located((By.NAME, "q")))
search_bar.clear()
search_bar.send_keys("mobiles")
search_bar.send_keys(Keys.RETURN)
print(" listing page ::")


a_link = wait.until(EC.visibility_of_element_located((By.XPATH, "(//div[@class='_4rR01T'])[1]")))
a_link.click()
print(" main page : ")

sleep(0.4)

driver.switch_to.window(driver.window_handles[-1])

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "button._3v1-ww"))).click()
 类似资料:
  • 我正在尝试找到Flipkart上的按钮,但它不起作用 我在XPath下面尝试过,但都不起作用 或 //错误 org.openqa.selenium.nosuchelementException:没有这样的元素:找不到元素:{“method”:“XPath”,“selector”:“//button[@class='_2AKMMA_2NPKH_4_2MWPVK'][text()='add to ca

  • 最初,我选择了一个包(Woo订阅) 然后添加了所有详细信息。 但未提交。 回到网站,所以再次购买我需要选择一个包。所以我选择了这个包,并填写了详细信息,然后转到付款包。 现在在我的购物车中,两个包都存在(即我没有第一次购买就选择的包和最近的包) 如何修复此问题,使最新选定的一个在购物车中,而较早的一个在选定最新的一个后立即删除。 我尝试了这个Woocommerce从购物车中删除所有产品,并将当前产

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

  • 在商品分类页面上,当有人点击“添加到购物车”时,WooCommerce通过Ajax在此按钮下方添加“查看购物车”。我发现处理这个的脚本是 /assets/js/frontend/add-to-cart.js 现在,我想添加"Procceed to check out",这样某人就可以立即去结账。 这是脚本的输出: 有没有人做过类似的事情?

  • 我正在尝试使用Selenium Python添加到购物车。当我运行代码时,网站显示添加到购物车,然后出现错误。当我转到购物车页面时,它只是说没有项目添加到购物车。我是不是做错什么了? HTML如下所示:

  • 问题内容: 我想用OpenCart 2.0.1.1中的加号和减号2个按钮替换添加到购物车,现在我无法正确编码减号按钮。我在其中添加了加号和减号按钮并进行调用,并在其中添加了类似网址,其余代码在下面 问题答案: 为了减少您的产品数量,您需要和数量。要减少数量,我们需要检查数量是否大于1(如果大于1),那么我们可以减少数量,否则,如果数量只有1,我们需要删除整个产品。 您需要更改的是在视图页面上添加加