1,ubuntu でジェンキンスをセットアップする
2、ubuntuにSeleniumをセットアップします
3,Seleniumテストスクリプトを作成する
以下のようなコード:
from selenium import webdriver
import time
driver=webdriver.Chrome(executable_path='/home/test/chromedriver')
driver.get('https://www.yahoo.com')
time.sleep(2)
screenshot=driver.save_screenshot("yahoo.png")
driver.quit()
4、スクリプトをローカルで実行すると成功します。
5、ジェンキンスを使用してスクリプトを実行しようとしています、
jenkins ビルドの下でシェルを実行し、
cd /ホーム/テスト
Pythonのテスト.py
6、Jenkinsのビルド失敗
コンソール出力:
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/test
[test] $ /bin/sh -xe /tmp/jenkins127263638261616263.sh
+ cd /home/test
+ python test.py
Traceback (most recent call last):
File "test.py", line 5, in <module>
driver=webdriver.Chrome(executable_path='/home/test/chromedriver')
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
desired_capabilities=desired_capabilities)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally.
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Build step 'Execute shell' marked build as failure
Finished: FAILURE
Webdriver を開始できなかったようです。どうすればこの問題を解決して jeninks で Selenium を実行できるかわかりません。自動化は初めてです。アドバイスをお願いします。
------------------------
Selenium テスト スクリプトに以下を追加してみてください:
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument('--headless')
2
@yandm はヘッドレス クロムを使用していますか?その場合は、上記の行の下に次の行も追加します: chrome_options.add_argument('--headless')
– r10
2020 年 9 月 3 日 11:54
はい、あなたは素晴らしいです!!この 2 行を追加しました。うまくいきました。 selenium.webdriver.chrome.options からインポート オプション chrome_options.add_引数('--headless')
– yandm
2020 年 9 月 3 日 12:34
------------------------
問題は chromedriver パスにあると思います。このパスは Jenkins ノード「executable_path='/home/test/chromedriver'」に存在しますか? ?
jenkins ノードでアクセスできる chromediver の正しいパスを指定します。
1
はい、パス「/home/test/chromedrive」は、 jenkins ノード上にあります...
– yandm
2020 年 9 月 3 日 11:42