我正在尝试点击以下链接上标记为“ 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 =属性,但这也无济于事。
感谢您的帮助。
答案 0 :(得分:4)
使用WebDriverWait
和expected_conditions
是一个好习惯!
请参见explicit-waits。
这对我有用:
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
...
答案 1 :(得分:3)
以下对我有用的
from selenium import webdriver
d = webdriver.Chrome()
url = 'https://firehouse.alohaorderonline.com/StartOrder.aspx?SelectMenuType=Retail&SelectMenu=1000560&SelectSite=01291'
d.get(url)
d.execute_script('document.getElementById("ctl00_ctl00_Content_Content_btnPickup").click();')
@Andersson的有用警告
通过execute_script执行的element.click()并不会真正引起点击,而只是触发元素(链接,输入,按钮等)的onclick动作。因此,如果您使用这种方法进行网络测试,则可能会错过大量的错误