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

问题描述 投票:1回答:2

我试图在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>

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

python selenium web-scraping selenium-chromedriver
2个回答
1
投票

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

虽然我在同一网站上尝试过访客用户结账,但我在下面的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调用。因此,它可能会导致脚本失败,因为您的脚本很好,但系统尚未就绪。


0
投票

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

driver = wevdriver.Chrome()
driver.implicitly_wait(3)
driver.find_element_by_xpath().click()
© www.soinside.com 2019 - 2024. All rights reserved.