(venv) ec-server@ecserver:/home/share/jenkins_build$ python3 Jenkins_buld.py メッセージが送信されました。 Traceback (most recent call last): File “Jenkins_buld.py”, line 75, in <module> login(driver,login_url,login_id,login_pass) File “Jenkins_buld.py”, line 24, in login driver.find_element(By.ID,”j_username”).clear() File “/home/share/jenkins_build/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py”, line 742, in find_element return self.execute(Command.FIND_ELEMENT, {“using”: by, “value”: value})[“value”] File “/home/share/jenkins_build/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py”, line 348, in execute self.error_handler.check_response(response) File “/home/share/jenkins_build/venv/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py”, line 229, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:”css selector”,”selector”:”[id=”j_username”]”} (Session info: chrome-headless-shell=120.0.6099.216); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception Stacktrace: #0 0x55bdca6a3f83 <unknown> #1 0x55bdca35ccf7 <unknown> #2 0x55bdca3ac99e <unknown> #3 0x55bdca3acaa1 <unknown> #4 0x55bdca3f7d64 <unknown> #5 0x55bdca3d60dd <unknown> #6 0x55bdca3f5006 <unknown> #7 0x55bdca3d5e53 <unknown> #8 0x55bdca39ddd4 <unknown> #9 0x55bdca39f1de <unknown> #10 0x55bdca668531 <unknown> #11 0x55bdca66c455 <unknown> #12 0x55bdca654f55 <unknown> #13 0x55bdca66d0ef <unknown> #14 0x55bdca63899f <unknown> #15 0x55bdca691008 <unknown> #16 0x55bdca6911d7 <unknown> #17 0x55bdca6a3124 <unknown> #18 0x7fd740016609 start_thread
このエラーは、指定されたID("j_username")を持つ要素が見つからないために発生しています。このようなエラーは、要素がまだページに読み込まれていないか、指定された方法で要素を特定できない場合に発生します。
この問題を解決するためには、以下のような手順を検討してみてください:
-
ログインフォームがページ上に表示されるまで待機する:要素が読み込まれるまで待機することで、NoSuchElementExceptionを回避できる場合があります。
WebDriverWaitを使用して特定の条件(要素の表示など)を待機することができます。 -
要素を特定する別の方法を使用する:
find_element()メソッドの第一引数にはByモジュールの定数を使用していますが、別の方法(XPathやCSSセレクタなど)を使用して要素を特定することもできます。
以下は、要素が表示されるまで待機する方法を示した修正例です:
python
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC def login(driver, login_url, login_id, login_pass): driver.get(login_url) # ログインフォームが表示されるまで待機 WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "j_username"))) # ログイン情報を入力 driver.find_element(By.ID, "j_username").clear() driver.find_element(By.ID, "j_username").send_keys(login_id) driver.find_element(By.NAME, "j_password").clear() driver.find_element(By.NAME, "j_password").send_keys(login_pass) driver.find_element(By.NAME, "Submit").click() # その他のコードは省略
この修正例では、WebDriverWaitを使用してログインフォームが表示されるまで待機し、要素が表示された後にログイン情報を入力するようにしています。

ディスカッション
コメント一覧
まだ、コメントがありません