一个好的自动化测试脚本对脚本的执行时间要求非常高.
三种等待方式:
1>强制等待 sleep(time)
2>隐性等待driver.implicitly_wait(time)
3>显性等待WebDriverWait(driver, timeout, poll_frequency, ignored_exceptions)
主要说明第三种等待方式,前两个不谈.
#导入模块
from selenium.webdriver.support.wait import WebDriverWait
#说明
WebDriverWait(浏览器的实例, 最大时间, 间隔时间(默认0.5秒), 异常情况)
后面跟 .until() 和 until_not()
实际操作:
WebDriverWait(driver, 10).until(lambda driver: driver.find_element(loc)).click()
WebDriverWait(driver, 10).until(lambda driver: driver.find_element(loc)).send_keys(text)
因为语句过长,对它进行封装,完成后可以直接调用该方法
#封装点击
def wait_element_click(self, *loc):
driver = self.driver
return WebDriverWait(driver, 10).until(lambda driver: driver.find_element(*loc)).click()
#封装输入
def wait_element_sendkeys(self, text, *loc):
driver = self.driver
return WebDriverWait(driver, 10).until(lambda driver: driver.find_element(*loc)).send_keys(text)
#尽情的尝试
#进入iframe
def select_list(self, text, *loc):
driver = self.driver
return WebDriverWait(driver, 10).until\
(lambda driver:Select(driver.find_element(*loc))).select_by_visible_text(text)