#三种等待方式:1、sleep(实际项目不建议使用影响项目性能,用来调式脚本)
2、implicitly_wait(隐式等待,一次设定多次使用)
3、WebDriverWait(显示等待,随时使用) 参数:driver timeout poll_frequency ignored_exceptions
#两种方法 until 与 until_not 参数: method ,message
from selenium import webdriver from time import sleep from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait
class TestCase: def init(self): self.driver = webdriver.Firefox() self.driver.maximize_window() self.driver.get(‘https://www.imooc.com/’) print(self.driver.title)
def test_sleep(self):
self.driver.find_element_by_id('kw').send_keys('selenium')
sleep(2) #线程阻塞 blocking wait
self.driver.find_element_by_id('su').click()
sleep(2)
self.driver.quit()
def test_implicitly_wait(self):
self.driver.implicitly_wait(10)
self.driver.find_element_by_id('kw').send_keys('selenium')
self.driver.find_element_by_id('su').click()
self.driver.quit()
def test_wait(self):
wait = WebDriverWait(self.driver,2)#实例化 WebDriverWait
wait.until(EC.title_is("百度一下你就知道"))
self.driver.find_element_by_id('kw').send_keys('selenium')
self.driver.find_element_by_id('su').click()
self.driver.quit()
if name == ‘main’: case = TestCase() #case.test_sleep() #case.test_implicitly_wait() case.test_wait() 调用case.test_wait方法是报错 最后发现是标题写的有误,然后修改这句代码中的标题后运行正常:wait.until(EC.title_is(“百度一下,你就知道”))。 平时总结写代码是要特别注意细节问题
|