Chrome Webdriver无法完成产品结帐自动化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chrome Webdriver无法完成产品结帐自动化相关的知识,希望对你有一定的参考价值。

我试图在this website上自动结帐产品。但是,在最后一步,当应该点击按钮提交付款时,按钮只是加载并且付款既未完成也未拒绝(弹出预期会告诉用户它已被拒绝)。

正如您在下面的图片中看到的那样,订单信息只是无限期地“加载”或“旋转”。

我不确定为什么会这样。任何帮助,将不胜感激。 What I am describing

编辑:我使用了显式等待加载动态内容(即html现在匹配完全加载页面的预期HTML(即

<button type="submit" title="Place Order" class="button btn-checkout" onclick="review.save();"><span><span>Place Order</span></span></button>

现在存在,但它仍然无限期地加载。我不确定要等待哪些其他元素。

答案

如果您在提到的网站上遇到订单问题,请确保在您使用相同的详细信息结帐时,网站没有不同的行为。

虽然我在同一网站上尝试过访客用户结账,但我在下面的API中遇到了连接超时错误

POST https://www.converse.ca/braintree/checkout/quoteTotal/ net :: ERR_CONNECTION_TIMED_OUT

导致旋转器继续滚动的原因。

如果存在元素特定问题,那么您可以处理它。下订单的最佳用例是

当它落在Order Review部分时,你必须使用显式等待条件,无论地方或按钮是否准备好。参考下面的代码

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

 WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "button[title='Place Order']")).click()

然后等到微调器离开以确保订单已经完成。

 WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "review-please-wait"))

注意:确保每个部分的等待时间足够,直到信息被加载,因为在您选择某个选项时有一些API调用。因此,它可能会导致脚本失败,因为您的脚本很好,但系统尚未就绪。

另一答案

你用过find_element_by_xpath()吗?在这种情况下,给一些隐含的等待时间来获取所有的Web资源。例如,

driver = wevdriver.Chrome()
driver.implicitly_wait(3)
driver.find_element_by_xpath().click()

以上是关于Chrome Webdriver无法完成产品结帐自动化的主要内容,如果未能解决你的问题,请参考以下文章

在Woocommerce中根据产品类别添加自定义结帐字段

从条带事件中获取产品 ID(结帐会话已完成)

在购物车和结帐的 WooCommerce 产品名称中附加自定义字段值

在产品中添加自定义字段以显示在购物车、结帐和订单中

python webdriver.chrome 无法隐藏浏览器窗口?

从结帐页面 woocommerce 更新购物车中的产品