社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

我不能用Python Selenium单击元素

thatpoppy fan • 5 年前 • 1531 次点击  

time.sleep() 和/或 WebDriverWait...until ,工作正常。

这个 click()

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55256
 
1531 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Heinz
Reply   •   1 楼
Heinz    6 年前

def myClick(by, desc):
    wait = WebDriverWait(dr, 10)
    by = by.upper()
    if by == 'XPATH':
        wait.until(EC.element_to_be_clickable((By.XPATH, desc))).click()
    if by == 'ID':
        wait.until(EC.element_to_be_clickable((By.ID, desc))).click()
    if by == 'LINK_TEXT':
        wait.until(EC.element_to_be_clickable((By.LINK_TEXT, desc))).click()

使用此功能时,代码:

driver.find_element_by_link_text('Show Latest Permit').click()

myClick('link_text', 'Show Latest Permit')

相反。

我已经运行了几个星期的数百个元素点击,我已经没有看到错误了。

Corey Goldberg
Reply   •   2 楼
Corey Goldberg    6 年前

有没有办法在全球范围内设置默认时间间隔,

是的,这正是设置隐式等待的作用。隐式等待用于WebDriver的生命周期。

例子:

driver.implicitly_wait(10)

信息:

JeffC
Reply   •   3 楼
JeffC    6 年前

你可以做一些事情。。。

  1. 定义全局默认等待时间,然后在创建的每个等待中使用该时间。

    default_wait_time = 10 # seconds
    ...
    wait = WebDriverWait(driver, default_wait_time)
    
  2. 在将多次使用wait的方法内部,可以实例化wait,将其存储在变量中,然后重用它。

    def my_method(self):
        wait = WebDriverWait(driver, 10)
        wait.until(EC.visibility_of_element_located((By.ID, "username")).send_keys("username")
        wait.until(EC.visibility_of_element_located((By.ID, "password")).send_keys("password")
        wait.until(EC.element_to_be_clickable((By.ID, "login")).click()
    
  3. 定义一个默认的WebDriverWait实例,然后重复使用它。

    注意:如果正在或将要并行运行脚本,则需要非常小心使用此方法,因为WebDriverWait的实例绑定到特定的驱动程序。

    # some global location
    wait = WebDriverWait(driver, 10)
    ...
    # in your script, page object, helper method, etc.
    wait.until(EC.element_to_be_clickable((By.ID, "login")).click()