硒按钮单击在Python控制台中有效,但在脚本中无效

时间:2018-12-31 05:58:46

标签: python selenium selenium-webdriver automation webdriver

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

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控制台中时,它将运行并且单击有效;浏览器被重定向。但是,当我将代码作为脚本运行时,单击不会发生(浏览器出现,页面呈现但单击未注册)。

希望能帮助您理解为什么会这样。

1 个答案:

答案 0 :(得分:0)

正如您提到的...将代码复制到它运行的交互式 Python 控制台中并且点击有效...这意味着即使 2 秒该元素也不会变成 clickable sleep


解决方案

理想情况下,要单击需要为 element_to_be_clickable() 引入 WebDriverWait 的元素,您可以使用以下基于 Locator Strategy

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