报错信息如下所示:
上面三行
C:\WINDOWS\system32\config\systemprofile\AppData\Local\Jenkins.jenkins\workspace\yango-web>c:
C:\WINDOWS\system32\config\systemprofile\AppData\Local\Jenkins.jenkins\workspace\yango-web>cd C:\Users\Administrator\PycharmProjects\yangoWebTest
C:\Users\Administrator\PycharmProjects\yangoWebTest>python yango_web_test.py
是 build 里面执行的命令行。
这个版本的错误我知道,是因为 chrome 版本和 chrome driver 版本不一致导致的,但是我很确定我的是一致的,因为在 pycharm 中可以运行的。所以我觉得可能是 gitlab 的问题。但是不知道具体是为什么。
看一下你 pycharm 里的 chrome 和 webdriver 版本分别是什么
我要怎么才能和你一样优秀?
两个办法,要么升级 chrome 版本到 87,要么降级 chrome driver 至能支持 chrome86 的版本。
PS:看报错啊,这么明显的错误提示~
怎么确定的?可以详细说下吗?
提醒一下,不能认为用的同一台电脑就确定一样的哦。加载的环境变量和配置不一样,最终用到的版本也会不一样。jenkins 打开的 shell 本身就和我们在操作系统界面打开的有差异的,就算同一台电脑也有差异。
PS:有点没看懂正文的内容和 jenkins 有啥关系,标题有提到 jenkins ,正文完全没提及。建议也详细说下到底 jenkins、gitlab 和 appium 在你这个环境下是怎么串起来的。
因为当时在 pycharm 上面遇到这个问题,所以我当时在本地的 webdriver 换到了和 chrome 一样的版本,从而 pycharm 上面才可以运行的,后面 chrome 的版本没有改变。
在 Jenkins 中,
(1)在配置管理中
(2)在项目配置中,我仅仅将
git 中的 url 和凭证换成了 gitlab 的 url 和 token,其他都没有改。
能请教下,你的 selenium 目录结构,一般都是怎么布置的? 能给个截图不?
PO 模式,网上很多哦
page object: https://www.cnblogs.com/zhaikunkun/p/12730750.html
这个虽然是 appium 的,但是差不多吧
是不是 Jenkins 运行的节点不是你本机的环境呢?或者你有两套 webdriver?
请问如何知道 Jenkins 运行的节点是否是本机环境呢,我只有一套 webdriver,把它放在了两个位置,python 的 script 下和 chrome 的安装目录下。
好吧,大致看懂了。
你可以排除 gitlab 这个原因了,gitlab 或者 git 都只管代码,不管环境。你现在的配置能保障 pycharm 拉到的代码和你 jenkins 拉到的代码一样,那这个部分的职责就完成了。
selenium 获取具体 webdriver 执行文件,默认是通过遍历环境变量里配置的路径实现的。从现象上看,chromedriver.exe 在你这台电脑有不止一个,而且版本不一样。可以所有盘都搜索一下,把多余的都扔到回收站,做到这台电脑只保留 1 个 chromedriver.exe 文件,然后再试试。
不好意思,可能上面的表达不是很好。
我按照您的想法,去找了一下 chromedriver.exe 的位置
我删掉了 python 下面那个,运行 pycharm 没有问题,运行 Jenkins 仍然有问题
我之所以觉得是 gitlab 配置的问题的原因是,用 Jenkins 运行好像没有像运行 github+jenkins 那样有一个拉取代码的过程,虽然 github 应该会很快。
这个文件夹应该是 Jenkins 的工作环境吧,之前我用 github 会有一个和项目同名的文件,下面的东西和 push 上去的一样,现在没有。
当然,我也有尝试有 git 和没有 git 的单个项目配置。有 git 上面有:
没有 git 就直接是:
但是两者的错误原因都是版本不对。
我之所以觉得是 gitlab 配置的问题的原因是,用 Jenkins 运行好像没有像运行 github+jenkins 那样有一个拉取代码的过程,虽然 github 应该会很快。
把你全部日志贴上来,特别是最开始的 50 行?这个拉取代码过程应该都会有的,只是快慢不同而已。日志里都应该会有。
另外,针对 chromedriver.exe 可能有多个的,删除后还是不行,可以试下改下代码,使用指定路径的 chromedriver 试试:
self.driver = webdriver.Chrome('C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe')
PS:多口问一句,你确认你电脑只装了一个 chrome 浏览器吧?
16:32:25 Started by user Li Shengjiao
16:32:25 Running as SYSTEM
16:32:25 [EnvInject] - Loading node environment variables.
16:32:25 Building in workspace C:\WINDOWS\system32\config\systemprofile\AppData\Local\Jenkins.jenkins\workspace\yango-web
16:32:25 [Checks API] No suitable checks publisher found.
16:32:25 No emails were triggered.
16:32:25 [yango-web] $ cmd /c call C:\WINDOWS\TEMP\jenkins10500894596543799942.bat
16:32:25
16:32:25 C:\WINDOWS\system32\config\systemprofile\AppData\Local\Jenkins.jenkins\workspace\yango-web>c:
16:32:25
16:32:25 C:\WINDOWS\system32\config\systemprofile\AppData\Local\Jenkins.jenkins\workspace\yango-web>cd C:\Users\Administrator\PycharmProjects\yangoWebTest
16:32:25
16:32:25 C:\Users\Administrator\PycharmProjects\yangoWebTest>python yango_web_test.py
16:32:29 Traceback (most recent call last):
16:32:29 File "yango_web_test.py", line 6, in <module>
16:32:29 from test_cases.TestCommunityComposition import TestCommunityComposition
16:32:29 File "C:\Users\Administrator\PycharmProjects\yangoWebTest\test_cases\TestCommunityComposition.py", line 13, in <module>
16:32:29 from utils.Run import driver
16:32:29 File "C:\Users\Administrator\PycharmProjects\yangoWebTest\utils\Run.py", line 38, in <module>
16:32:29 run = Run()
16:32:29 File "C:\Users\Administrator\PycharmProjects\yangoWebTest\utils\Run.py", line 20, in __init__
16:32:29 self.driver = webdriver.Chrome(chrome_options=options)
16:32:29 File "F:\lsj\Python\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 76, in __init__
16:32:29 RemoteWebDriver.__init__(
16:32:29 File "F:\lsj\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
16:32:29 self.start_session(capabilities, browser_profile)
16:32:29 File "F:\lsj\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session
16:32:29 response = self.execute(Command.NEW_SESSION, parameters)
16:32:29 File "F:\lsj\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
16:32:29 self.error_handler.check_response(response)
16:32:29 File "F:\lsj\Python\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
16:32:29 raise exception_class(message, screen, stacktrace)
16:32:29 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 87
16:32:29 Current browser version is 86.0.4240.111 with binary path C:\Program Files\Google\Chrome\Application\chrome.exe
16:32:29
16:32:29
16:32:29 C:\Users\Administrator\PycharmProjects\yangoWebTest>exit 1
动作无非就是哪些 单击 双击 输入 切 iframe 访问 url 之类的 一般也就几十个 可以抽象出来 将元素和这些动作进行任意的组合
BasePage 抽象所有动作,每个页面维护元素,上面的网址只是一个例子,入门的,当然 po 有更好的优化方案