2017-04-09 15 views
0

Ich schreibe ein Programm mit Python und Selen, um die Anmeldung in einer Website zu automatisieren. Die Website stellt eine Sicherheitsfrage zur zusätzlichen Überprüfung. Offensichtlich würde die Antwort, die ich mit "send_keys" senden würde, von der gestellten Frage abhängen, so dass ich herausfinden muss, was auf der Grundlage des Textes gefragt wird. BeautifulSoup kann verwendet werden, um den HTML-Code zu analysieren, aber in allen Beispielen, die ich gesehen habe, müssen Sie eine URL angeben, um den Seiteninhalt zu lesen. Wie lese ich den Inhalt einer bereits geöffneten Seite? Der Code Ich verwende ist:Laden Sie HTML einer Webseite herunter, die bereits geladen ist

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from bs4 import BeautifulSoup 
chromedriver = 'C:\\Program Files\\Google\\chromedriver.exe' 
browser = webdriver.Chrome(chromedriver) 
browser.get('http://www.aaaa.com') 
loginElem = browser.find_element_by_id('bbbb') 
loginElem.send_keys('cccc') 
passwordElem = browser.find_element_by_id('dddd') 
passwordElem.send_keys('eeee') 
passwordElem.send_keys(Keys.RETURN) 

Die Seite mit den Sicherheitsfragen lädt danach und das ist die Seite, die ich die URL möchten. Ich habe auch versucht, nach Element zu finden, aber aus irgendeinem Grund war es nicht funktioniert, weshalb ich einen Workaround versuche. Im Folgenden finden Sie den HTML-Code für die gesamte div-Klasse, in der sich die Frage befindet. Alternativ können Sie mir vielleicht helfen, nach dem richtigen zu suchen.

<div class="answer-section"> 
<p> Please answer your challenge question so we can&nbsp;help 
verify&nbsp;your identity. 
</p> <label for="tlpvt-challenge-answer"> What is the name of your dog? 
</label> 
<input type="text" id="tlpvt-challenge-answer" class="tl-private gis- mask" 
name="challengeQuestionAnswer" value=""/> 
</div> 
+0

warum brauchen Sie 'BeautifulSoup' dafür? Sie können einfach das HTML-Element mit 'loginElem = browser.find_element_by_id ('bbbb')' oder einer anderen Methode in 'selen' aufrufen und dann' loginElem.text' (das war ein Beispiel, ich sage nicht, dass das ist das Element, dessen Text du parsen musst) – odradek

+0

Ich habe der Frage einige weitere Informationen hinzugefügt, die erklären sollten, warum ich die obige Route versuche –

Antwort

0

gut, wenn Sie verwenden möchten BeautifulSoup Sie den Quellcode aus dem WebDriver abrufen können und dann analysieren:

chromedriver = 'C:\\Program Files\\Google\\chromedriver.exe' 
browser = webdriver.Chrome(chromedriver) 
browser.get('http://www.aaaa.com') 

# call page_source attr from a webdriver instance to 
# retrieve HTML source code 
html = browser.page_source 

# parse it with BeautifulSoup 
soup = BeautifulSoup(html, 'html.parser') 
label = soup.find('label', {'for': 'tlpvt-challenge-answer'}) 
print label.get_text() 

Ausgang:

$ What is the name of your dog? 
Verwandte Themen