From 061fa270b28308a840acc099eede7db7f02cf171 Mon Sep 17 00:00:00 2001 From: Ji Zhi Qian Date: Thu, 18 Mar 2021 15:55:42 +0800 Subject: [PATCH 1/3] remote selenium chrome --- iselenium.ini | 3 ++- test/web_ut.py | 31 +++++++++++++++++++++++-------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/iselenium.ini b/iselenium.ini index 6f69e4f..ffb3707 100644 --- a/iselenium.ini +++ b/iselenium.ini @@ -1,2 +1,3 @@ [driver] -chrome_driver= \ No newline at end of file +chrome_driver= +remote= \ No newline at end of file diff --git a/test/web_ut.py b/test/web_ut.py index 9aebada..6097cd3 100644 --- a/test/web_ut.py +++ b/test/web_ut.py @@ -5,6 +5,7 @@ import unittest from selenium import webdriver +from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.options import Options @@ -25,18 +26,25 @@ def setUp(self): # 控制是否采用无界面形式运行自动化测试 try: - using_headless = os.environ["using_headless"] + browser = os.environ["browser"] except KeyError: - using_headless = None - print('没有配置环境变量 using_headless, 按照有界面方式运行自动化测试') + browser = None + print('没有配置环境变量 browser, 按照默认有界面方式运行自动化测试') chrome_options = Options() - if using_headless is not None and using_headless.lower() == 'true': + if browser is not None and browser.lower() == 'no_gui': print('使用无界面方式运行') chrome_options.add_argument("--headless") - - self.driver = webdriver.Chrome(executable_path=config.get('driver', 'chrome_driver'), - options=chrome_options) + self.driver = webdriver.Chrome(executable_path=config.get('driver', 'chrome_driver'), + options=chrome_options) + elif browser is not None and browser.lower() == 'remote': + print('使用远程方式运行') + self.driver = webdriver.Remote(command_executor=config.get('driver', 'remote'), + desired_capabilities=DesiredCapabilities.CHROME) + else: + print('使用有界面Chrome浏览器运行') + self.driver = webdriver.Chrome(executable_path=config.get('driver', 'chrome_driver'), + options=chrome_options) @allure.story('Test key word 今日头条') def test_webui_1(self): @@ -67,5 +75,12 @@ def _test_baidu(self, search_keyword, testcase_name): elem = self.driver.find_element_by_name("wd") elem.send_keys(f'{search_keyword}{Keys.RETURN}') print(f'搜索关键词~{search_keyword}') + time.sleep(5) - self.assertTrue(f'{search_keyword}' in self.driver.title, msg=f'{testcase_name}校验点 pass') + result = f'{search_keyword}' in self.driver.title + self.assertTrue(result, msg=f'{testcase_name}校验点 pass') + + if result: + print(f'搜索关键词{search_keyword}: Pass') + else: + print(f'搜索关键词{search_keyword}: Fail') From beea91e27b1d3602ea7c5c891d1b9d8cfef8447e Mon Sep 17 00:00:00 2001 From: Ji Zhi Qian Date: Thu, 18 Mar 2021 16:22:14 +0800 Subject: [PATCH 2/3] Docstring --- test/web_ut.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/web_ut.py b/test/web_ut.py index 6097cd3..7c7cca6 100644 --- a/test/web_ut.py +++ b/test/web_ut.py @@ -38,8 +38,9 @@ def setUp(self): self.driver = webdriver.Chrome(executable_path=config.get('driver', 'chrome_driver'), options=chrome_options) elif browser is not None and browser.lower() == 'remote': - print('使用远程方式运行') - self.driver = webdriver.Remote(command_executor=config.get('driver', 'remote'), + docker_remote = config.get('driver', 'remote') + print(f'使用远程方式运行, remote url:{docker_remote}') + self.driver = webdriver.Remote(command_executor=docker_remote, desired_capabilities=DesiredCapabilities.CHROME) else: print('使用有界面Chrome浏览器运行') From ddfa32703f6514a8f09da2edbde1e359287ea5a3 Mon Sep 17 00:00:00 2001 From: Ji Zhi Qian Date: Thu, 18 Mar 2021 17:25:52 +0800 Subject: [PATCH 3/3] Jenkinsfile --- Jenkinsfile | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..c688c44 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,43 @@ +pipeline{ + agent { + label 'master' + } + + parameters { + choice(name: 'browser', choices: ['chrome', 'no_gui', 'remote'], description: 'Running type') + + } + + stages{ + stage('自动测试程序源码同步') { + steps { + sh 'mkdir -p iSelenium_Python' + dir("iSelenium_Python"){ + git branch:'docker', url:'git@github.com:princeqjzh/iSelenium_Python.git' + } + } + } + + stage('运行自动化测试') { + steps { + sh ''' + . ~/.bash_profile + + cd iSelenium_Python + + #更新python依赖库 + pip3.9 install -r requirements.txt + + #运行自动化测试 + pytest -sv test/web_ut.py + ''' + } + } + } + + post { + always { + emailext body: '$DEFAULT_CONTENT', recipientProviders: [[$class: 'RequesterRecipientProvider']], subject: '$DEFAULT_SUBJECT' + } + } +} \ No newline at end of file