Selenium等待某个元素出现之隐式等待

本文介绍了一种解决网页元素定位困难的方法,通过增加隐式等待时间解决了找不到特定元素的问题,并成功实现了点击操作。

找不到元素这个问题困扰了两天了,一直怀疑是页面div层次太多,定位不准确。于是就从table开始到最后一层精确定位,仍然找不元素。怎么办,在网上搜索答案,说是可以加个隐式试试,于是在执行前加了一句等待

driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);
driver.findElement(By.xpath("//div[@class='btns']/input[@class='acxiom-button primary'][@value='OK']")).click();

成功通过。

转载于:https://www.cnblogs.com/amy-2013/p/4462417.html

Selenium是一个广泛使用的自动化测试框架,它支持多种浏览器。其中,显示等待(explicit waits)和等待(implicit waits)是用于处理网页元素加载时间不确定的情况。 **显示等待(Explicit Waits)**: 显示等待是一种显的暂停操作,在指定的条件满足之前,会持续等待一段时间。它需要我们明确地设置等待的时间和判断条件。例如,我们可以设置等待某个特定元素(如通过`find_element_by_*()`方法找到的元素)出现、变为可用(比如元素可见或者某些属性改变),当条件成立时才会继续执行后续步骤。这种方可以避免因为网络延迟或其他不确定性导致的程序崩溃。 ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "myElement")) ) ``` 这里,driver是我们正在控制的浏览器实例,10是等待的最大秒数,`EC.presence_of_element_located()`则定义了我们要等待的条件。 **等待(Implicit Waits)**: 等待则是设置全局的默认查找超时时间。在元素定位失败时,Selenium会在接下来的操作前等待一定的时间,直到找到匹配的元素。如果在这段时间内仍然找不到元素等待就会结束,并抛出异常。设置等待通常适用于不太确定元素何时会出现的场景,但过度的等待可能会延长整体脚本运行时间。 ```python driver.implicitly_wait(5) # 设置默认查找时间为5秒 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值