質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

2926閲覧

Python3 Selenium /usr/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.pyのエラー解決方法について

cocytus

総合スコア12

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2019/03/15 04:02

概要

以下の環境下でPython3で実行したSeleniumが動作しません。
原因と思われる箇所についてご助言頂けると助かります。

#動作環境

項目
OSCentOS7.6
Python3.6
google-chrome-stable73.0.3683.75
chromedriver73.0.3683.68

動かない実行ファイル

python

1# coding:utf-8 2from selenium import webdriver 3from selenium.webdriver.common.by import By 4from selenium.webdriver.support.ui import WebDriverWait 5from selenium.webdriver.support import expected_conditions as EC 6from selenium.webdriver.chrome.options import Options 7import time 8 9fqdn = "xxx.com" 10#メールアドレス 11mail = "xxx.@gmail.com" 12 13options = Options() 14options.add_argument('--headless') 15options.add_argument('--no-sandbox') 16options.add_argument('--disable-gpu') 17options.add_argument('--window-size=1280,1024') 18driver = webdriver.Chrome(chrome_options=options) 19#ログイン 20driver.get(fqdn) 21driver.find_element_by_id('username').send_keys("xxx") 22driver.find_element_by_id('password').send_keys("xxx") 23driver.find_element_by_class_name('btn').click() 24#登録 25driver.get(fqdn) 26driver.find_element_by_id('name').send_keys("test") 27driver.find_element_by_id('size').send_keys("100") 28driver.find_element_by_class_name('btn').click() 29#確認用 30#新規作成 31driver.execute_script("ToNewCreate('')") 32#管理者管理登録画面 33driver.find_element_by_id('loginid').send_keys("xxx") 34driver.find_element_by_id('lastname').send_keys("xxx") 35driver.find_element_by_id('firstname').send_keys("xxx") 36driver.find_element_by_id('mailaddress').send_keys(mail) 37driver.find_element_by_id('password').send_keys("xxx") 38driver.find_element_by_name('regist').click() 39#ID取得 40driver.find_element_by_link_text('idlist').click() 41current_url = driver.current_url 42uid = current_url.split(":",2) 43driver.get(fqdn + uid[1]) 44driver.find_element_by_id('username').send_keys("xxx") 45driver.find_element_by_id('password').send_keys("xxx") 46driver.find_element_by_class_name('btn').click() 47#管理画面 48driver.get(fqdn + uid[1]) 49#確認用 50##新規登録 51driver.execute_script("check()") 52driver.find_element_by_id('loginid').send_keys("xxx") 53driver.find_element_by_id('lastname').send_keys("xxx") 54driver.find_element_by_id('firstname').send_keys("xxx") 55driver.find_element_by_id('mailaddress').send_keys(mail) 56driver.find_element_by_id('password').send_keys("xxx") 57driver.find_element_by_name('regist').click() 58#以降なに書いても動かない 59driver.save_screenshot('test.png')

エラー内容

bash

1Traceback (most recent call last): 2 File "xxx.py", line 59, in <module> 3 driver.save_screenshot('test.png') 4 File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 1055, in save_screenshot 5 return self.get_screenshot_as_file(filename) 6 File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 1032, in get_screenshot_as_file 7 png = self.get_screenshot_as_png() 8 File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 1064, in get_screenshot_as_png 9 return base64.b64decode(self.get_screenshot_as_base64().encode('ascii')) 10 File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 1074, in get_screenshot_as_base64 11 return self.execute(Command.SCREENSHOT)['value'] 12 File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute 13 self.error_handler.check_response(response) 14 File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 241, in check_response 15 raise exception_class(message, screen, stacktrace, alert_text) 16selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None 17Message: unexpected alert open: {Alert text : メールの送信に失敗しました。} 18 (Session info: headless chrome=73.0.3683.75) 19 (Driver info: chromedriver=73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72),platform=Linux 3.10.0-957.el7.x86_64 x86_64)

属性や値に関しては一部マスキングしているため、実際の値ではありませんが
57行目までのコードだけだと動作するため正常かと思われます。

試したこと

こちらを参照して、「明示的な待機」っぽい処理を57行目の属性に入れてみましたが
やはり57行目以降の処理は動作しませんでした。

57行目以降に「time.sleep(120)」を追加しましたがこちらも変わらず…。

当方Python,Seleniumともに現在あまり理解しておらず申し訳ないのですが、
上記に記載した「明示的な待機」について理解が及んでおりませんので(どの属性を指定しているかなど)
待機処理で解決するということでしたらそちらもご教示頂けると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のコードでスクリーンショットを撮ろうとした時に、対象サイトにJavaScriptのalertメッセージが表示された状態だったためにselenium.common.exceptions.UnexpectedAlertPresentExceptionが発生しています。

python

1driver.save_screenshot('test.png')

alertメッセージが表示されている理由は対象サイトの仕様なので分かりませんが、以下のように書いてalertメッセージを閉じるようにしておけばエラーを回避することはできます。

python

1# ↓以下のimport文も必要 2# from selenium.common.exceptions import UnexpectedAlertPresentException 3try: 4 driver.save_screenshot('test.png') 5except UnexpectedAlertPresentException: 6 driver.switch_to.alert.accept()

switch_toの仕様については以下公式ドキュメントを参照してください。

7. WebDriver API — Selenium Python Bindings 2 documentation

投稿2019/03/15 06:11

ryu22e

総合スコア132

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cocytus

2019/03/15 09:01

ご回答頂きありがとうございます。 自分が作成しているWebサイトでalertメッセージがでていたようです。 もともとでていなかったので、そちら側に問題があることもわかりました。 一旦、エラーを回避しその後の処理につなげることで正常に動作しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問