自动化测试常用脚本-等待某个元素是否显示

在 UI 自动化测试中,由于会经常碰到页面加载较慢,导致元素可能识别不到的情况,因此,需要封装一个函数,动态的判断某个元素是否加载完成,才能继续
进行下一步操作,如下例子


from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver

'''等待元素加载完毕'''
dr = webdriver.chrome()
def wait_element_is_displayed(self, element, way="id", wait_time=10):
    """
     在10秒内,每隔1秒就判断元素是已经显示
    :param attribute: 定位的元素
    :param way: 定位的方式,默认使用 id 定位
    :param wait_time: 等待的时间,默认10秒
    return: 找到返回 True,找不到则返回 False
    """
    try:
        if way == "id":
            WebDriverWait(self.dr, wait_time, 1).until(lambda x: x.find_element_by_id(element).is_displayed())
        elif way == "xpath":
            WebDriverWait(self.dr, wait_time, 1).until(lambda x: x.find_element_by_xpath(element).is_displayed())
        elif way == "name":
            WebDriverWait(self.dr, wait_time, 1).until(lambda x: x.find_element_by_name(element).is_displayed())
        return True
    except Exception:
        return False

使用方式:

def test_wait_element_is_displayed(self):
    # 使用 id 判断 
    self.wait_element_is_displayed("password")
    # 使用 name 判断 
    self.wait_element_is_displayed("element", way="name")
    # 使用 xpath 判断   
    xp = ".//input[@name='password']"
    self.wait_element_is_displayed(xp, way="xpath")

以上只是使用了 id,name,xpath 这三种方式进行定位,其他定位方式可根据测试场景需要进行扩展

posted @ 2020-05-23 00:11  chenzy01  阅读(360)  评论(0编辑  收藏  举报