Chrome Webdriver无法完成产品结帐自动化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chrome Webdriver无法完成产品结帐自动化相关的知识,希望对你有一定的参考价值。
我试图在this website上自动结帐产品。但是,在最后一步,当应该点击按钮提交付款时,按钮只是加载并且付款既未完成也未拒绝(弹出预期会告诉用户它已被拒绝)。
正如您在下面的图片中看到的那样,订单信息只是无限期地“加载”或“旋转”。
编辑:我使用了显式等待加载动态内容(即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 产品名称中附加自定义字段值