私はセレンでウェブサイトにログインしようとしています。これは私が作ったコードです。Seleniumでは、Webサイトにログイン中にInvalidSelectorExceptionを処理する方法
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://abcde.com")
assert "xxx" in driver.title
user = driver.find_element_by_css_selector("#ctl00_MasterHeaderPlaceHolder_ctl00_userNameTextbox")
user.clear()
user.send_keys("username")
pwd = driver.find_element_by_css_selector("#ctl00$MasterHeaderPlaceHolder$ctl00$passwordTextbox")
pwd.clear()
pwd.send_keys("mypassword")
pwd.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()
私はこのコードを実行すると、InvalidSelectorExceptionが発生しました。
上げexception_class(メッセージ、画面、スタックトレース) selenium.common.exceptions.InvalidSelectorException:メッセージ:無効セレクタ: (ドライバ:無効または違法セレクタが (クロム= 59.0.3071.115セッション情報)が指定されました情報:chromedriver = 2.30.477691(6ee44a7247c639c0703f291d320bdf05c1531b57)、プラットフォーム=のLinux 4.4.0-83-ジェネリックx86_64版)
私はあなたの便宜のためにPNGファイルを添付しました。 これはウェブサイトのページソースです。
<input name="ctl00$MasterHeaderPlaceHolder$ctl00$userNameTextbox" type="text" value="Username" id="ctl00_MasterHeaderPlaceHolder_ctl00_userNameTextbox" OnClick="UsernameBehaviour("click", "ctl00_MasterHeaderPlaceHolder_ctl00_userNameTextbox", "Username");" OnFocus="UsernameBehaviour("focus", "ctl00_MasterHeaderPlaceHolder_ctl00_userNameTextbox", "Username");" OnBlur="UsernameBehaviour("blur", "ctl00_MasterHeaderPlaceHolder_ctl00_userNameTextbox", "Username");" />
<input name="ctl00$MasterHeaderPlaceHolder$ctl00$passwordTextbox" type="password" id="ctl00_MasterHeaderPlaceHolder_ctl00_passwordTextbox" OnBlur="PasswordBehaviour("ctl00_MasterHeaderPlaceHolder_ctl00_passwordTextbox", "ctl00_MasterHeaderPlaceHolder_ctl00_tempPasswordTextbox", 1);" style="display:none" />
<input name="ctl00$MasterHeaderPlaceHolder$ctl00$tempPasswordTextbox" type="text" value="Password" id="ctl00_MasterHeaderPlaceHolder_ctl00_tempPasswordTextbox" OnClick="PasswordBehaviour("ctl00_MasterHeaderPlaceHolder_ctl00_passwordTextbox", "ctl00_MasterHeaderPlaceHolder_ctl00_tempPasswordTextbox", 2);" OnFocus="PasswordBehaviour("ctl00_MasterHeaderPlaceHolder_ctl00_passwordTextbox", "ctl00_MasterHeaderPlaceHolder_ctl00_tempPasswordTextbox", 2);" />
ご覧のとおり、2つの入力ボックスに関連するパスワードがあります。パスワード入力タグをクリックすると、JavaScriptが何かをするようです。確信はないけど。
私はその理由と解決策を知りたいと思います。
お時間をいただきありがとうございます。
私を助けてください。
こんにちは、マディス。お返事をありがとうございます。申し訳ありませんが、ユーザー名の入力ボックスがうまくいきます。パスワード入力ボックスのためにエラーが発生しました。私はこれについて知りたいです。 –
@YuiryKozlenko Hmm。次に、パスワードフィールドが「隠されている」という問題になる可能性があります。スタイル= "表示:なし"。これにより問題が発生する可能性があります。正しい入力フィールドに切り替えます。 pwd = driver.find_element_by_css_selector( " ctl00 $ MasterHeaderPlaceHolder $ ctl00 $ tempPasswordTextbox") –
これを解決する方法はありますか? –