使用selenium手工编写测试用例,官方文档地址:文档入口
示例需求:
首先导入selenium的webdriver,用于后续创建driver对象,进行浏览器的操作
from selenium import webdrier
创建测试类,把driver的对象创建,放在setup中去,把资源释放放在teardown中,如下
注:
class TestBaidu():
def setup(self):
self.driver = webdriver.Chrome()
def teardown(self):
self.driver.quit()
定义测试方法,编写测试的步骤:
def test_baidu(self):
self.driver.get("https://www.baidu.com")
self.driver.find_element(By.ID, "kw").click()
self.driver.find_element(By.ID, "kw").send_keys("北京")
time.sleep(2)
self.driver.find_element(By.ID, "kw").send_keys(Keys.ENTER)
time.sleep(2)
self.driver.find_element(By.XPATH, "//div[@id='1']/div/div/h3/a").click()
完整代码如下:
import time
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
class TestBaidu():
def setup(self):
self.driver = webdriver.Chrome()
def teardown(self):
self.driver.quit()
def test_baidu(self):
self.driver.get("https://www.baidu.com")
self.driver.find_element(By.ID, "kw").click()
self.driver.find_element(By.ID, "kw").send_keys("北京")
time.sleep(2)
self.driver.find_element(By.ID, "kw").send_keys(Keys.ENTER)
time.sleep(2)
self.driver.find_element(By.XPATH, "//div[@id='1']/div/div/h3/a").click()
由于网络原因或服务响应速度原因,有时候元素并不能马上加载出来,这个时候就需要添加等待时间来确保元素可以价值出来,显式等待使用time的sleep方法,在每个步骤后面添加等待时间
sleep(2)
每个步骤都去添加sleep比较麻烦,而且等待时候很难确认,所以建议使用隐式等待,使用webdriver的implicitly_wait()方法即可
注:implicitly_wait()方法定义的等待时间是全局的,即每个操作步骤都会持续查找元素固定的时间,找到元素后直接结束,不用等待到定义的时间。
self.driver.implicitly_wait(3)
隐式等待优化后代码如下:
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
class TestBaidu():
def setup(self):
self.driver = webdriver.Chrome()
self.driver.get("https://www.baidu.com")
self.driver.implicitly_wait(5)
def teardown(self):
self.driver.quit()
def test_baidu(self):
self.driver.find_element(By.ID, "kw").click()
self.driver.find_element(By.ID, "kw").send_keys("北京")
self.driver.find_element(By.ID, "kw").send_keys(Keys.ENTER)
self.driver.find_element(By.XPATH, "//div[@id='1']/div/div/h3/a").click()
简单介绍selenium编写测试用例的过程:导入包->实例化driver对象->设置等待时间->操作网站->释放资源