为什么要用自动化测试?
- 软件测试中重复的用例点了一遍又一遍,耗费开发小伙伴大量的时间和精力
- 白盒测试中可能由于某些操作上的疏忽导致本应该失败的用例通过了
- 自动化测试时间短效率高,大部分时间只会投入到前期的开发工作中,后期基本没有太大的时间成本
- 打开这个页面,打开那个页面,点这个点那个,有这时间,来把王者不香吗?再不行看看抖音,紧跟一下潮流也行啊~(开个玩笑 ^ _ ^)
自动化测试逻辑
- 模拟web浏览器访问
- 获取页面元素
- 对页面元素进行操作
- 对返回结果进行验证
- 当我们获取元素是常常会遇到请求发送但是元素还未加载的情况,这时候就需要进行等待,分为显示等待和隐式等待
- 当我们使用XPATH定位元素的时候,XPATH的语法需要构建,这时候可以使用浏览器自带的debug工具进行元素的XPATH完整路径拷贝基本上可以解决大部分的元素定位问题了
需要安装的三方库
pip install webdriver-manager
pip install selenium
实例代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.wait import WebDriverWait
def test_eight_components():
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
driver.get("https://www.selenium.dev/selenium/web/web-form.html")
title = driver.title
assert title == "Web form"
driver.implicitly_wait(0.5)
text_box = driver.find_element(by=By.NAME, value="my-text")
check_box = driver.find_element(by=By.XPATH, value="/html/body/main/div/form/div/div[2]/div[1]/label[2]")
check_box.click()
submit_button = driver.find_element(by=By.CSS_SELECTOR, value="button")
text_box.send_keys("Selenium")
submit_button.click()
message = WebDriverWait(driver, timeout=30).until(lambda d: d.find_element(by=By.ID, value="message"))
value = message.text
assert value == "Receive!"
driver.quit()
test_eight_components()
参考网站
- https://www.selenium.dev/zh-cn/documentation/webdriver/