2016-09-10 6 views
1

セレンを使用してthis websiteにログインします。私はウェブドライバをインポートし、そのページにログイン情報を送るためにキーをインポートしました。セレンを使用してコンテンツを廃棄することはできません。

私は「暗黙のうちに機能を待つ」

を使用して、ページがロードされるまで、ウェブサイトでのユーザー名の欄を待つために、ブラウザを作ってきた

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

私はセレンを調製するために使用される。この、

chromedriver = "chromedriver.exe" 
browser = webdriver.Chrome(chromedriver) 
browser.get("https://m.adidas.com/us/myaccount-create-or-login") 

<input type="text" value="" placeholder="* EMAIL" data-placeholder="* Email" maxlength="50" class="textinput required trimspace" name="username" id="username">
、このようなHTMLコンテンツを持っています

そして、私は上記のコードを持つ2つの要素のidのを発見したと、私は個人情報を送信するために、このコードを書いた

<input type="password" placeholder="* PASSWORD" data-placeholder="* Password" maxlength="50" autocomplete="off" name="password" value="" class="textinputpw required" id="password">

パスワードことがあり

username1 = browser.find_element_by_id("username") 
password1 = browser.find_element_by_id("password") 
username1.send_keys(email.get()) # Used a gui entry box so why email.get() 
password1.send_keys(password.get()) 

しかし、上記のコードは情報を送信していない私はなぜそれがわからないのですか?これで私を助けてくれますか?

私はxパスを使ってキーを送信しようとしました。 Webサイトが403のアクセス拒否エラーを生成するかどうかを確認するためにページソースを印刷しましたが、それは私の場合ではありません。

は、私は何が間違っている場合は、この親切裸に新しいです

EDIT: - 私の試してみてください。

username1 = browser.find_element_by_id("username") 
browser.switch_to.frame(username1) 
password1 = browser.find_element_by_id("password") 
browser.switch_to.frame(password1) 
username1.send_keys(email.get()) # Used a gui entry box so why email.get() 
password1.send_keys(password.get()) 

答えて

1

あなたが到達しようとしている要素がIFRAMEの内側にあります。

<iframe id="loginaccountframe" class="sso-iframe" src="https://cp.adidas.com/web/eCom/en_US/loadsignin?target=account" frameborder="0" scrolling="no"></iframe> 

IFRAMEに切り替える必要があります。

http://selenium-python.readthedocs.io/navigating.html#moving-between-windows-and-frames

+0

私は(私は別のsatckオーバーフローの答えをrefrredとALOS要素が見つからない印刷物というIDの後browser.switch_to.frame(USERNAME1)を追加しようとしています例外を説明することができますか?私はチュートリアルも参照しました。私は親切にも助けてくれます。 – abcdef

+0

フレームに切り替えようとしたことは言及していませんでした。あなたが使用したコードと結果が何であったかを試してみてください。iframeに切り替えて電子メールとパスワードを入力してみましたが、うまくいきました。試したコード(あなたの質問で)とその結果は何か...例外メッセージなど – JeffC

+0

私はあなたがコードを投稿して私が紛失していることを確認できますか(私はあなたのために働いていると言って以来これをリクエストしました)あなたのコードから学ぶでしょう – abcdef

0

実際@JeffCiframeがあり、権利です。したがって、iframe内の要素を見つける前に、それをiframeに切り替える必要があります。

あなたのようにコメントで述べたように: -

私はあなたが実際にあるiframe要素を想定するusername1スイッチング素子をしているbrowser.switch_to.frame(USERNAME1)

を追加しようとしています違う。

見つけようとしている他の要素としてiframe要素を個別に見つけて、そのiframe要素に切り替える必要があります。しかし、ここでは以下のようにそのidを使用してiframeに切り替えることができます: -

browser.switch_to.frame("loginaccountframe") 

#now do your login stuff inside iframe 
username1 = browser.find_element_by_id("username") 
username1.send_keys(email.get()) # Used a gui entry box so why email.get() 

password1 = browser.find_element_by_id("password") 
password1.send_keys(password.get()) 

#now after doing all stuff inside iframe you need to switch back to default content for further steps 
browser.switch_to.default_content() 
関連する問題