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

时间:2018-10-06 07:53:14

标签: python selenium web-scraping selenium-chromedriver

我正在尝试自动在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>

现在存在,但仍无限期加载。我不确定还有哪些其他元素。

2 个答案:

答案 0 :(得分:1)

如果您在提到的站点上遇到订单问题,请确保在手动结帐具有相同详细信息的站点时,该站点没有其他行为。

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

  

POST https://www.converse.ca/braintree/checkout/quoteTotal/   净:: 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调用。因此,这可能会导致脚本失败,因为您的脚本很好,但系统尚未就绪。

答案 1 :(得分:0)

您使用过find_element_by_xpath()吗? 在这种情况下,请提供一些隐式等待时间以获取所有Web资源。 例如,

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