'''产品分析'''
#产品:测试人论坛
#功能:搜索
#地址:https://ceshiren.com
'''测试用例分析'''
#用例标题 前提条件 用例步骤 预期结果 实际结果
#测试人搜索功能 进入测试人论坛首页 1.点击搜索按钮 1.搜索成功
# 2.输入搜索关键词 2.搜索结果列表包含关键字
# 3.点击搜索按钮
#结合pytest测试框架
#用例标题=文件名(test_ceshiren)+类名(class TestCeshiren)+方法名(def test_search)
from selenium import webdriver
from selenium.webdriver.common.by import By
#代码优化1
#问题:1,没有前置和后置的处理动作 2,driver启动了之后没有做quit()
#如果没有quit()动作,会导致大量的chromedriver 进程一直存在
class TestCeshiren():
'''
def setup(self):
前提条件:进入测试人论坛的搜索页面
测试步骤:1,输入搜索关键词
2,点击搜索按钮
预期结果/实际结果
:return:
#优化:可以把以下三步放在setup下边
# 打开浏览器
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(3)
# 打开被测地址
self.driver.get('https://ceshiren.com/search?expanded=true')
'''
def teardown(self):
#优化问题:2,driver启动了之后没有做quit()
#每次用例结束之后都会关闭chromedriver的进程,也会关闭浏览器
self.driver.quit()
def test_search(self):
'''
前提条件:进入测试人论坛的搜索页面
测试步骤:1,输入搜索关键词
2,点击搜索按钮
预期结果/实际结果
:return:
'''
#打开浏览器
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(3)
#打开被测地址
self.driver.get('https://ceshiren.com/search?expanded=true')
#定位到搜索输入框,并输入搜索内容
self.driver.find_element(By.CSS_SELECTOR,"[placeholder='搜索']").send_keys('appium')
#点击搜索按钮
self.driver.find_element(By.CSS_SELECTOR,".search-cta").click()
#断言=预期结果与实际结果对比的结果
#获取实际结果,即为获取搜索结果列表的标题内容
#第一种方式,获取第一个搜索结果
web_element=self.driver.find_element(By.CSS_SELECTOR,'.topic-title')
#获取文本类的实际结果 断言,appium关键字是否在获取的实际结果文本之中
#两种解决方案:
#1,统一,比如断言'Appium' in web_element.text
#2,就是获取到的内容和预期结果统一,使用.liwer就可以使大写的字母小写
assert 'appium' in web_element.text.lower()