Example #1
0
 def  setUp(self) -> None:
     assemble = Driver()
     self.driver = assemble.get_driver()
     self.driver.get('https://www.bilibili.com')
     self.driver.implicitly_wait(20)
     self.driver.find_element_by_xpath('//input[@class="nav-search-keyword"]').clear()
     self.driver.find_element_by_xpath('//input[@class="nav-search-keyword"]').send_keys('【公主连结】天秤座B1')
     a=self.driver.current_window_handle
     #截取当前网页handle
     self.driver.find_element_by_xpath('//div[@class="nav-search-btn"]').click()
     # driver.quit()
     b=self.driver.window_handles
     def switch(a):
         #判断当前网页handle与之前是否相同,不相同就切换到新的网页
         for i in b:
             if i==a:
                 pass
             else:
                 self.driver.switch_to_window(i)
     switch(a)
Example #2
0
class DataDrivenDDT1(unittest.TestCase, BaiduMainPage):
    @classmethod
    def setUpClass(cls) -> None:
        # Chrome_path=chromedriver_path
        # option = webdriver.ChromeOptions()
        # option.add_argument('--headless') #设置谷歌无头浏览器
        # option.add_argument("--start-maximized") #设置谷歌浏览器打开就是最大的
        # option.add_experimental_option('excludeSwitches',['enable-automation'])
        # #反爬虫识别,如果不开这个,在进行登录的时候部分网站会让输入验证码等一些麻烦的识别操作
        # # option.add_argument("--disable-infobars")
        # #浏览器打开时会有一个浏览正在受到自动化软件控制,上面的代码可以去掉,不过无头浏览器加不加这个都行,反正也看不见么
        # # option.add_argument('--no-sandbox')
        # #以最高权限启动
        #
        # cls.driver = webdriver.Chrome(chrome_options=option,executable_path=Chrome_path)
        print('test_1开始测试')
        # cls.assembler=Driver()
        # cls.driver=cls.assembler.get_driver()
        # cls.mysql=cls.assembler.get_mysql()
    def setUp(self):
        self.assembler = Driver()
        self.driver = self.assembler.get_driver()
        self.mysql = self.assembler.get_mysql()
        # url = "http://www.baidu.com"
        self.jump_to()
        self.imgs = []
        self.addCleanup(self.cleanup)  #每次执行完自动删除图片

    def add_imgs(self):  #如果用HTMLTestRunner_cn截图的话得写这个方法
        self.imgs.append(self.driver.get_screenshot_as_base64())
        return True

    def save_img(self, img_name):
        '''BeautifulReport截图方法'''
        self.driver.get_screenshot_as_file('{}/{}.png'.format(
            os.path.abspath(img_path), img_name))

    def cleanup(self):
        '''清除图片'''
        pass

    @ddt.data(*Readexcel(os.path.join(data_path, 'shuju.xlsx')))
    @ddt.unpack
    # @BeautifulReport.add_test_img('百度首页访问截图','测试成功后截图','测试失败后截图1','测试失败后截图2','测试失败后截图3')
    def test_dataDrivenByDDT1(self, testdata, expectdata):
        '''搜索testdata内容后,看expectdata内容在不在当前页面源码中'''
        self.save_img('百度首页访问截图')
        #调用数据库
        try:
            # WebDriverWait(self.driver,20).until(lambda driver:self.driver.find_element_by_id("kw"))
            # self.driver.find_element_by_id("kw").send_keys(testdata)
            self.search(testdata)
            # WebDriverWait(self.driver,20,0.5).until(EC.title_is("百度一下,你就知道")) #判断标题是否某个值,返回布尔值
            WebDriverWait(self.driver, EC.title_is('百度一下,你就知道'))
            self.add_imgs()
            time.sleep(3)
            self.add_imgs()
            self.assertTrue(expectdata in self.driver.page_source)
        except NoSuchElementException as e:
            self.add_imgs()
            log.error(u"查找的页面元素不存在,异常堆栈信息:" + str(traceback.format_exc()))
            print(u"查找的页面元素不存在,异常堆栈信息:" + str(traceback.format_exc()))
            # self.save_img('测试失败后截图1')
            raise
            #这里如果不释放异常的话,HTMLTestRunner_cn的用例失败重跑功能不会执行
        except AssertionError as e:
            self.add_imgs()
            print(u"搜索 '%s',期望出现 '%s' ,失败" % (testdata, expectdata))
            log.error(u"搜索 '%s',期望出现 '%s' ,失败" % (testdata, expectdata))
            print('异常报错:%s' % traceback.format_exc())
            # self.save_img('测试失败后截图2')
            raise

        except Exception as e:
            self.add_imgs()
            print(u"未知错误,错误信息:" + str(traceback.format_exc()))
            log.error(u"未知错误,错误信息:" + str(traceback.format_exc()))
            # self.save_img('测试失败后截图3')
            raise
        else:
            self.add_imgs()
            print(u"搜索 '%s',期望出现 '%s' ,通过" % (testdata, expectdata))
            log.info(u"搜索 '%s',期望出现 '%s' ,通过" % (testdata, expectdata))
            # self.save_img('测试成功后截图')
    def tearDown(self):
        '''每次结束后关闭浏览器'''
        self.assembler = Driver()
        self.assembler.disassemble_driver()

    @classmethod
    def tearDownClass(cls) -> None:
        print('test_1测试结束')
Example #3
0
 def __init__(self):
     ass = Driver()
     self.driver = ass.get_driver()