首页 > 解决方案 > 使用 python/Selenium 单击 Javascript 按钮时出现问题

问题描述

我正在尝试单击以下链接中标有“Pickup”的按钮:

https://firehouse.alohaorderonline.com/StartOrder.aspx?SelectMenuType=Retail&SelectMenu=1000560&SelectSite=01291

我的代码在下面,但在失败并出现错误之前什么都不做

元素不可交互

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= 属性,但这也没有任何作用。

任何帮助表示赞赏。

标签: pythonseleniumweb-scraping

解决方案


使用WebDriverWaitandexpected_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...的情况下使用


推荐阅读