2017-05-23 3 views
1

Jedes Mal, wenn ich diesen Code ausführen, bekomme ich ein Problem auf die Zielseite erreichen. Die Seite erfordert, dass der Parameter "post request" ausgefüllt wird, um die Seite zu erreichen, auf der ich mich befindet. Mit der get-Anfrage war es jedoch gut zu gehen, bis der Parameter "Var4" in meinem Code gefunden wurde. Inspizierendes Element konnte ich sehen, dass es als versteckt angezeigt wird. Wenn ich den ausgeblendeten Parameter leer gelassen habe, wird er an einen anderen Ort weitergeleitet. Also, diese Sache zu erfüllen, um auf die Zielseite zu kommen, übersteigt meine Möglichkeiten. Jeder Vorschlag wird geschätzt.Problem mit versteckten Element mit Selen

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() 

Element für die versteckten Stoffe, die für „Var4“ anwendbar sein sollten:

<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

Können Sie die 'html' rund um dieses' input' zeigen? Da wirklich verborgene Felder auf der Seite nicht angezeigt werden, schätze ich, dass das Element innerhalb des eigentlichen Elements verborgen ist, an das Sie Schlüssel senden möchten. – mrfreester

+0

Danke mrfreester, für deine Antwort. Ich habe gerade den Teilbereich des Formulars aktualisiert. Hoffe, es wird dem Zweck dienen. – SIM

Antwort

2

Als Abhilfe können Sie versuchen Javascript ausführen mit Selen.

Zum Beispiel sichtbar machen Element

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

oder Sollwert direkt

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

Danke SergeiZ, für Ihre Antwort. Ich muss etwas über den Ausdruck wissen, den du oben geschrieben hast. Warum diese beiden Ausdrücke (document.get--) und Semikolon vor dem Ende des Ausdrucks? Bei der Ausführung Ihrer Methode habe ich keinen Fehler gefunden, also nehme ich an, dass es mich in die richtige Richtung führt. – SIM

+0

In diesen Ausdrücken führen wir JavaScript direkt im Browser aus, um mit der Webseite zu manipulieren, ein Semikolon in JavaScript dient dazu, Anweisungen zu trennen. – SAZ

+0

Im zweiten Ausdruck verwenden wir die Python-String-Formatierung, um Var4 '% s' im Ausdruck zuzuweisen. Mehr dazu hier - https://pyformat.info/ – SAZ

0

Sie zu einem verborgenen Elemente nicht Sendkeys wählen können, was Sie tun können, ist Javascript zu verwenden, um den Wert zu senden

wahrscheinlich so etwas wie dieses

driver.execute_script("document.getElementById('DoMemberSearch').value='1') 
Verwandte Themen