2017-05-23 19 views
1

このコードを実行するたびに、対象のページに到達する問題が発生します。このサイトでは、後のページに到達するために投稿要求パラメータを入力する必要があります。しかし、getリクエストを使用すると、自分のコード内で "Var4"パラメータにヒットするまで行った方が良いことでした。要素を調べると、それが隠されていることがわかります。隠しパラメータを空白のままにした場合、別の場所にリダイレクトされます。したがって、目標を達成するためにこれを満足させることは、私の能力を超えています。どんな提案も感謝します。 「VAR4」のために適用可能であるべきである隠された詰め込むためセレンで隠された要素を扱う際のトラブル

from selenium import webdriver 

driver = webdriver.Chrome(r"C:\Users\ar\Desktop\Chromedriver\chromedriver.exe") 
driver.get('https://www.infocomm.org/cps/rde/xchg/infocomm/hs.xsl/memberdirectory.htm') 

Var1='Professional Services Providers' 
Var2='AUSTRALIA' 
Var3='0' 
Var4='1' 

driver.find_element_by_xpath('//select[@name="mas_type"]').send_keys(Var1) 
driver.find_element_by_xpath('//select[@name="mas_cntr"]').send_keys(Var2) 
driver.find_element_by_xpath('//input[@name="OtherCriteria"]').send_keys(Var3) 
driver.find_element_by_xpath('//input[@name="DoMemberSearch"]').send_keys(Var4) 
driver.find_element_by_xpath('//input[@type="submit"]').click() 

要素:

<form name="searchform" id="searchform" action="memberdirectory.htm" method="post" onsubmit="return Checkform();"> 
<input type="hidden" id="DoMemberSearch" name="DoMemberSearch" value="1"> 
<div class="login block-type-a block"> 
+0

あなたはこの 'input'を囲む' html'を表示することができますか?本当に隠されたフィールドはページに表示されないので、キーを送信する実際の要素内に要素が隠されていると思います。 – mrfreester

+0

ありがとうmrfreester、あなたの答えです。私はちょうどフォームの部分的な部分で更新しました。それが目的に役立つことを願っています。 – SIM

答えて

2

のようなものは、JavaScriptを実行してみてくださいセレンで

例えば、要素を再表示する

driver.execute_script("document.getElementById('DoMemberSearch').type = 'text';") 
直接

または設定値

driver.execute_script("document.getElementById('DoMemberSearch').value = '%s';" % Var4) 
+0

SergeiZさん、ありがとうございます。あなたが上に書いた表現について何かを知る必要があります。なぜこれらの2つの表現(document.get--)とセミコロンは、式の終わりの前に?あなたの方法を実行する私はエラーがないので、私は正しい方向に私を導いていると思った。 – SIM

+0

これらの表現では、ブラウザでJavaScriptを直接実行しており、Webページで操作するために、JavaScriptのセミコロンが文を区切ります。 – SAZ

+0

2番目の式では、Pythonの文字列書式を使用してVar4の値を式の '%s'に割り当てます。さらに詳しい情報はこちら - https://pyformat.info/ – SAZ

0

あなたは何ができるか、隠し要素にのSendKeysことができませんでした値を送信するためにJavaScriptを使用することです

おそらく回避策として、この

driver.execute_script("document.getElementById('DoMemberSearch').value='1') 
関連する問題