selenium的等待条件

在上一篇文章中,我们讲到了显示等待,在until的方法中使用的等待条件是:title_is。下面简单介绍了selenium的17种等待:

序号方法名含义返回值
1title_is判断title,是否出现布尔
2title_contains判断title,是否包含某些字符布尔
3presence_of_element_located判断某个元素是否被加到了dom树里,并不代表该元素一定可见WebElement
4visibility_of _element_located判断某个元素是否被加到了dom树里并且可见,宽和高都大于0WebElement
5visibility_of判断元素是否可见,如果可见就返回这个元素WebElement
6presence_of_all_elements_located判断是否至少有一个元素存在于dom树中列表
7visibility_of_any_elements_located判断是否至少有一个元素在页面上可见列表
8text_to_be_present_in_element判断指定的元素中是否包含了预期的字符串布尔
9text_to_be_present_in_element_value判断指定的元素属性值中是否包含了预期的字符串布尔
10frame_to_be_available_and_switch_to_it判断该iframe是否可以switch进去布尔
11invisibility_of_elements_located判断某个元素是否存在于dom或不可见布尔
12element_to_be_clickable判断某个元素中是否可见且是enable的,代表可点击布尔
13staleness_of等待某个元素从dom树中移除布尔
14element_to_bo_selected判断某个元素是否被选中了布尔
15element_selection_state_to_be判断某个元素的选中状态是否符合预期布尔
16element_located_selection_state_to_be判断某个元素的选中状态是否符合预期布尔
17alert_is_present判断页面上是否存在alertalert

代码示例如下:

from selenium import webdriver
import os

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

class TestCase(object):
    def __init__(self):
        self.driver = webdriver.Chrome()
        path = 'file:///'+os.path.abspath('test_wait.html')
        self.driver.get(path)

    def test(self):
        self.driver.find_element_by_id('btn').click()
        # 显示等待
        wait = WebDriverWait(self.driver, 3)
        wait.until(EC.text_to_be_present_in_element((By.ID, 'id2'), 'id 2'))
        print(self.driver.find_element_by_id('id2').text)
        print('ok')
        self.driver.quit()

if __name__ == '__main__':
    case = TestCase()
    case.test()

当 wait = WebDriverWait(self.driver, 3)中的3改为1时,则会报TimeoutException错误;如果没有显示等待,则会报NoSuchElementException。
html的页面代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>title</title>
</head>
<body>
<script>
    function f(){
        window.setTimeout("populate()",2000);
    }
    function populate(){

        document.getElementById("id1").innerHTML = "<div id='id2'>id 2</div>"
    }
</script>
<form>
    <input type="text" name="t1">
    <input type="button" value="Click me" onclick="f()" id="btn">
    <div id="id1">
    </div>
</form>
</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远不要矫情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值