我一直在Python 3.8中为以下网站https://fasttimes.com.au/(使用Magento构建的网站)构建自动结帐脚本,并且所有按钮,下拉菜单,输入等均已起作用。根据python控制台显示,在运送选择阶段,该按钮用于保存运送详细信息并允许进入开票阶段; “消息:元素不可交互”。
我尝试使用execute_script
直接与该网站进行交互,这不会产生错误并表示已完成,但是实际上在WebDriver中并未单击该按钮,因此继续进行下一步操作。不会结帐。至于“行动链”。它们只是产生上面的错误,与通过XPATH
或CSS_Selector
查找相同。我尝试使用导入的“键”并尝试使用ENTER键操作按钮,以及使用WebDriver替代.send_keys(u'\ue007')
都无济于事。在下面提到之前,我还尝试使用等待,但是也许我做错了吗?
例如
element = WebDriverWait(driver, 15).until(
ec.presence_of_element_located((By.ID, "login:guest")))
如果上面的行格式不正确,请纠正我
站点的HTML如下:
<div class="buttons-set" id="shipping-method-buttons-container">
<p class="back-link"><a href="#" onclick="checkout.back(); return false;"><small>« </small>Back</a></p>
<button type="button" class="button" onclick="shippingMethod.save()"><span><span>Continue</span></span></button>
<span id="shipping-method-please-wait" class="please-wait" style="display:none;">
<img src="https://static.fasttimes.com.au/skin/frontend/ultimo/default/images/opc-ajax-loader.gif" alt="Loading next step..." title="Loading next step..." class="v-middle"> Loading next step... </span>
</div>
我当前的代码是:
driver.find_element_by_xpath("//*[@id='shipping-method-buttons-container']/button").send_keys(u'\ue007')
任何建议将不胜感激。我相信我要与之互动的按钮是
<button type="button" class="button" onclick="shippingMethod.save()"><span><span>Continue</span></span></button>
...但是我不太确定。我感觉到现在为止我已经用尽了所有可能的途径,但是我拒绝相信这个该死的按钮不是很棘手!谢谢:)
答案 0 :(得分:0)
正如您提到的那样,您想进入 Billing 阶段,据我了解,您处于结帐流程的第1步。之所以这样说,是因为您用xpath //*[@id='shipping-method-buttons-container']/button
所标识的是第4步运输方法中的按钮,实际上这还不是很棘手。
您需要先选择“结帐方法”,然后从此处进行。试试看:
driver.find_element_by_id('login:guest').click() # select the "Checkout as Guest" radio button
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='onepage-guest-register-button']")))
driver.find_element_by_xpath("//*[@id='onepage-guest-register-button']").click() # click Continue
或者,如果是第4步,那么您真的会停留在:
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='shipping-method-buttons-container']/button")))
driver.find_element_by_xpath("//*[@id='shipping-method-buttons-container']/button").click()