Selenium按钮点击可以在Python控制台中工作,但不能在脚本中工作



我有以下Python代码,使用Selenium来自动按下按钮:

from selenium import webdriver
import time
def main():
page_url = 'x.htm?'
driver = webdriver.Safari()
driver.get(page_url)
time.sleep(2)
elem = driver.find_element_by_xpath('yy')
elem.click()
driver.quit()
if __name__ == '__main__':
main()

我已经删除了URL和按钮,但它们是有效的。当我将代码复制到交互式Python控制台中时,它会运行并点击;浏览器被重定向。但是,当我将代码作为脚本运行时,点击不会发生(浏览器出现,页面呈现,但点击未注册)。

我很想知道为什么会发生这种事。

正如您提到的。。。将代码复制到它运行的交互式Python控制台中,点击就可以了这意味着即使有2秒的睡眠,该元素也无法点击。


解决方案

理想情况下,要点击需要诱导WebDriverWait等待element_to_be_clickable()的元素,可以使用以下基于xpath的定位器策略:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "yy"))).click()

注意:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

最新更新