测试人论坛搜索功能自动化测试

'''产品分析'''
#产品:测试人论坛
#功能:搜索
#地址: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()