pytest+selenium项目部署到jenkins环境踩坑记录

buildstep shell 脚本中一开始配置如下;

pip install -r reqirements.txt

pytest


执行就提示“pip: command not found”

修改后

pip3install -r reqirements.txt

pytest

执行后提示:pytest: command not found

把pytest 改成全路径后修复

/opt/homebrew/anaconda3/envs/py38selenium/bin/pytest

新的问题是在本地case是通过的,但是到jenkins上case执行过程报错

_________________________________ test_case01 __________________________________service = options =    @staticmethod    def get_path(service: Service, options: BaseOptions) -> str:        path = service.path        try:>          path = SeleniumManager().driver_location(options) if path is None else path/opt/homebrew/anaconda3/envs/py38selenium/lib/python3.8/site-packages/selenium/webdriver/common/driver_finder.py:38: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /opt/homebrew/anaconda3/envs/py38selenium/lib/python3.8/site-packages/selenium/webdriver/common/selenium_manager.py:106: in driver_location    output = self.run(args)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = ['/opt/homebrew/anaconda3/envs/py38selenium/lib/python3.8/site-packages/selenium/webdriver/common/macos/selenium-manager', '--browser', 'chrome', '--language-binding', 'python', '--output', ...]    @staticmethod    def run(args: List[str]) -> dict:        """Executes the Selenium Manager Binary.            :Args:        - args: the components of the command being executed.        :Returns: The log string containing the driver location.        """        if logger.getEffectiveLevel() == logging.DEBUG:            args.append("--debug")        args.append("--language-binding")        args.append("python")        args.append("--output")        args.append("json")            command = " ".join(args)        logger.debug("Executing process: %s", command)        try:            if sys.platform == "win32":                completed_proc = subprocess.run(args, capture_output=True, creationflags=subprocess.CREATE_NO_WINDOW)            else:                completed_proc = subprocess.run(args, capture_output=True)            stdout = completed_proc.stdout.decode("utf-8").rstrip("\n")            stderr = completed_proc.stderr.decode("utf-8").rstrip("\n")            output = json.loads(stdout)            result = output["result"]        except Exception as err:            raise WebDriverException(f"Unsuccessful command executed: {command}") from err            for item in output["logs"]:            if item["level"] == "WARN":                logger.warning(item["message"])            if item["level"] == "DEBUG" or item["level"] == "INFO":                logger.debug(item["message"])            if completed_proc.returncode:>          raise WebDriverException(f"Unsuccessful command executed: {command}.\n{result}{stderr}")E          selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /opt/homebrew/anaconda3/envs/py38selenium/lib/python3.8/site-packages/selenium/webdriver/common/macos/selenium-manager --browser chrome --language-binding python --output json.E          {'code': 65, 'message': 'error sending request for url (https://storage.googleapis.com/chrome-for-testing-public/124.0.6367.60/mac-arm64/chromedriver-mac-arm64.zip): error trying to connect: Connection reset by peer (os error 54)', 'driver_path': '', 'browser_path': ''}/opt/homebrew/anaconda3/envs/py38selenium/lib/python3.8/site-packages/selenium/webdriver/common/selenium_manager.py:154: WebDriverExceptionThe above exception was the direct cause of the following exception:    def test_case01():>      driver = webdriver.Chrome()testcase/test_login.py:8: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /opt/homebrew/anaconda3/envs/py38selenium/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py:45: in __init__    super().__init__(/opt/homebrew/anaconda3/envs/py38selenium/lib/python3.8/site-packages/selenium/webdriver/chromium/webdriver.py:49: in __init__    self.service.path = DriverFinder.get_path(self.service, options)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ service = options =    @staticmethod    def get_path(service: Service, options: BaseOptions) -> str:        path = service.path        try:            path = SeleniumManager().driver_location(options) if path is None else path        except Exception as err:            msg = f"Unable to obtain driver for {options.capabilities['browserName']} using Selenium Manager.">          raise NoSuchDriverException(msg) from errE          selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for chrome using Selenium Manager.; For documentation on this error, please visit:https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location/opt/homebrew/anaconda3/envs/py38selenium/lib/python3.8/site-packages/selenium/webdriver/common/driver_finder.py:41: NoSuchDriverException=========================== short test summary info ============================FAILED testcase/test_login.py::test_case01 - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for chrome using Selenium Manager.; For documentation on this error, please visit:https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location============================== 1 failed in 22.05s ==============================Build step 'Execute shell' marked build as failure[selenimuAllure] $ /opt/homebrew/Cellar/allure/2.28.0/bin/allure generate /Users/cwc/.jenkins/workspace/selenimuAllure/report -c -o /Users/cwc/.jenkins/workspace/selenimuAllure/allure-reportReport successfully generated to /Users/cwc/.jenkins/workspace/selenimuAllure/allure-reportAllure report was successfully generated.Creating artifact for the build.Artifact was added to the build.Finished: FAILURE

网上搜罗一番看意思大概是说selenium找不到浏览器webdriver

https://blog.csdn.net/CcReborn/article/details/132656781找到这篇教程

参考着修改了代码:

chrome_driver_path ="/opt/homebrew/anaconda3/envs/py38selenium/bin/chromedriver"

service = Service(executable_path=chrome_driver_path)

driver = webdriver.Chrome(service=service)

driver.maximize_window()

通过!!

PS:另外还有一个奇怪的问题,本地环境修改为python3.9后也有这个报错,但是本地用python3.8不报错,奇怪的是在jenkins端看起来用的是3.8也会报错,在本地使用3.9复现问题后修改代码本地通过,然后使用新代码Jenkins上也通过了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,923评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,154评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,775评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,960评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,976评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,972评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,893评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,709评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,159评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,400评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,552评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,265评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,876评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,528评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,701评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,552评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,451评论 2 352

推荐阅读更多精彩内容