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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Python 3.x

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

selenium

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

Q&A

解決済

1回答

42990閲覧

seleniumで存在する要素でno such element: Unable to locate elementが出る

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

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

selenium

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

0グッド

1クリップ

投稿2020/04/17 08:26

編集2020/04/17 08:33

Pythonのseleniumにてブラウザ操作をしています。
途中までは上手くいくのですが、あるボタンをクリックしようとしたときに
なぜか下記のエラーが出てしまいます。

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="forward_rblgi01_s01"]"}

該当部分のHTMLソースは下記です↓

HTML

1<input type="image" name="forward_rblgi01_s01" src="/docs/0149/0/images/densi_syomeisyo_login_btn.png" onclick="return executeSubmitDomain(this.name);" alt="電子証明書ログイン">

実行しているコードは下記となります。

Python

1from selenium import webdriver 2import chromedriver_binary 3from selenium.webdriver.common.by import By 4from selenium.webdriver.common.keys import Keys 5from selenium.webdriver.support.ui import Select 6from selenium.common.exceptions import NoSuchElementException 7from selenium.common.exceptions import NoAlertPresentException 8import unittest, time, re 9 10class AppDynamicsJob(unittest.TestCase): 11 def setUp(self): 12 # AppDynamics will automatically override this web driver 13 # as documented in https://docs.appdynamics.com/display/PRO44/Write+Your+First+Script 14 self.driver = webdriver.Chrome() 15 self.driver.implicitly_wait(30) 16 self.base_url = "https://www.google.com/" 17 self.verificationErrors = [] 18 self.accept_next_alert = True 19 20 def test_app_dynamics_job(self): 21 driver = self.driver 22 driver.get("https://www.shizuokabank.co.jp/corporation/index.html") 23 driver.find_element_by_xpath(u"//img[@alt='ログインはこちら']").click() 24 # ERROR: Caught exception [ERROR: Unsupported command [selectWindow | win_ser_1 | ]] 25 driver.find_element_by_name("forward_rblgi01_s01").click() 26 driver.find_element_by_xpath("//input[@name='']").click() 27 # ERROR: Caught exception [ERROR: Unsupported command [selectWindow | win_ser_2 | ]] 28 driver.find_element_by_xpath("//button[@value='0']").click() 29 driver.find_element_by_xpath("//button[@value='0']").click() 30 driver.find_element_by_xpath("//button[@value='0']").click() 31 driver.find_element_by_xpath("//button[@value='0']").click() 32 driver.find_element_by_xpath("//button[@value='0']").click() 33 driver.find_element_by_xpath("//button[@value='0']").click() 34 driver.find_element_by_xpath("//button[@value='0']").click() 35 driver.find_element_by_xpath("//button[@value='0']").click() 36 driver.find_element_by_xpath("//button[@value='0']").click() 37 driver.find_element_by_id("confirmBtn").click() 38 driver.close() 39 # ERROR: Caught exception [ERROR: Unsupported command [selectWindow | win_ser_1 | ]] 40 driver.find_element_by_id("loginBtn").click() 41 42 def is_element_present(self, how, what): 43 try: self.driver.find_element(by=how, value=what) 44 except NoSuchElementException as e: return False 45 return True 46 47 def is_alert_present(self): 48 try: self.driver.switch_to_alert() 49 except NoAlertPresentException as e: return False 50 return True 51 52 def close_alert_and_get_its_text(self): 53 try: 54 alert = self.driver.switch_to_alert() 55 alert_text = alert.text 56 if self.accept_next_alert: 57 alert.accept() 58 else: 59 alert.dismiss() 60 return alert_text 61 finally: self.accept_next_alert = True 62 63 def tearDown(self): 64 # To know more about the difference between verify and assert, 65 # visit https://www.seleniumhq.org/docs/06_test_design_considerations.jsp#validating-results 66 self.assertEqual([], self.verificationErrors) 67 68if __name__ == "__main__": 69 unittest.main() 70

エラー箇所は上記コードの下記の部分です。

driver.find_element_by_name("forward_rblgi01_s01").click()

要素指定方法をxpathに変えても同じエラーが出てしまいます。

どのように変更すればうまくいくのか悩んでいます。

ご知見のおありになります方どうぞよろしくお願いいたします。

環境:Windows10
Python 3.7.3

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

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

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

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

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

guest

回答1

0

ベストアンサー

ログインはこちらをクリックした後に以下を入れてみてください。
そのname属性の要素は存在していますか?

python

1print(driver.page_source)

投稿2020/04/17 08:37

shirai

総合スコア1290

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

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

退会済みユーザー

退会済みユーザー

2020/04/17 08:54

ありがとうございます。 存在しませんでした。これが原因ですね。
退会済みユーザー

退会済みユーザー

2020/04/17 09:08

ログインはこちらをクリックした時に別タブが立ち上がっていて、 前のソースから要素を探していたのが原因でした。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問