python - 使用 python/Selenium 单击 Javascript 按钮时出现问题
问题描述
我正在尝试单击以下链接中标有“Pickup”的按钮:
我的代码在下面,但在失败并出现错误之前什么都不做
元素不可交互
pickupurl = 'https://firehouse.alohaorderonline.com/StartOrder.aspx?SelectMenuType=Retail&SelectMenu=1000560&SelectSite=1291'
driver = webdriver.Chrome('d:\\chromedriver\\chromedriver.exe')
driver.implicitly_wait(80)
driver.get(pickupurl)
button = driver.find_elements_by_xpath('//*[@id="ctl00_ctl00_PickupButton"]')
button.click()
该代码似乎可以定位一个元素,因为当我打印“按钮”时,我得到了一个元素对象。
我尝试使用 driver.execute_script 来执行 onclick= 属性,但这也没有任何作用。
任何帮助表示赞赏。
解决方案
使用WebDriverWait
andexpected_conditions
是一个好习惯!
请参阅显式等待。
这对我有用:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
pickupurl = 'https://firehouse.alohaorderonline.com/StartOrder.aspx?SelectMenuType=Retail&SelectMenu=1000560&SelectSite=1291'
driver = webdriver.Chrome('d:\\chromedriver\\chromedriver.exe')
driver.get(pickupurl)
wait = WebDriverWait(driver, 10)
pickup_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@id='btnPickupDiv']/div[@class='Button']")))
pickup_button.click()
loacter = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "AddressZipLabelDiv")))
driver.quit()
您可能与find_elements_by_xpath
您有关的问题应该find_element_by_xpath
在没有s
...的情况下使用
推荐阅读
- python - 未找到 boto3 模块
- c++ - C++ 错误:取消定义对类中 main 的引用
- rxjs - rxjs catcherror 出现在管道之前
- nearprotocol - NEAR 协议中存储的智能合约 WebAssembly 二进制文件在哪里/如何?
- google-places-api - 替代 Google 附近搜索
- python - 电报机器人在回复键盘后无法发送消息
- node.js - 在 AWS Lambda 中使用 ImageMagick 从图像中获取 EXIF 数据
- javascript - 周围最近的坐标
- javascript - 如何使用 Node 和 Electron 动态更改 CSS 样式属性
- android - 如何避免android中mvvm架构中的内存泄漏