2016-04-09 9 views
0

firebugSelen wird nicht meine Elemente

console

Ich habe ein Projekt finden, die ich Selenium 1-5 Links zu öffnen gewählt haben. Es stoppt bei der 3. Verbindung. Ich habe die gleichen Methoden für die zuvor erfolgreichen Anfragen verfolgt. Ich habe 17 Sekunden erlaubt und sah zu, wie ich die Seite laden kann, bevor das Skript in meiner Konsole weiterläuft. Ich bin nur nicht sicher, warum es nicht auf diesen Link finden können, und ich hoffe, es ist etwas, das ich einfach bin mit Blick auf ...

from selenium import * 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.action_chains import ActionChains 
import csv 
import time 

username = "xxxxxxx" 
password = "xxxxxxx" 
driver = webdriver.Firefox() 
driver.get("https://tm.login.trendmicro.com/simplesaml/saml2/idp/SSOService.php") 
assert "Trend" in driver.title 
elem1 = driver.find_element_by_class_name("input_username") 
elem2 = driver.find_element_by_class_name("input_password") 
elem3 = driver.find_element_by_id("btn_logon") 
elem1.send_keys(username) 
elem2.send_keys(password) 
elem3.send_keys(Keys.RETURN) 
time.sleep(7) 
assert "No results found." not in driver.page_source 
elem4 = driver.find_element_by_css_selector("a.float-right.open-console") 
elem4.send_keys(Keys.RETURN) 
time.sleep(17) 
elem5 = driver.find_element_by_tag_name("a.btn_left") 
elem5.send_keys(Keys.RETURN) 
+4

Geben Sie Ihren Code ein, kein Bild Ihres Codes. – Andy

+0

'time.sleep()' ist ziemlich unzuverlässig. Siehe http://stackoverflow.com/questions/2835179/how-to-get-selenium-to-wait-for-ajax-response –

+1

Auch das tatsächliche Ergebnis enthalten. –

Antwort

0

Nun ist einer der Gründe ist elem5 wird für das Element von Tag-Namen suchen , aber Sie übergeben es ein CSS-Tag. "a.btn_left" ist kein html-Tag-Name und daher wird Ihr Skript es nie wirklich finden, da es einfach nicht in dom existiert.

Sie müssen entweder von css_selector oder besser noch von Xpath gefunden werden. Wenn Sie dies so zuverlässig wie möglich und zukunftssicher machen wollen, versuche ich immer Elemente auf einer Seite mit mindestens 2 Deskriptoren zu finden, wenn möglich mit Xpath.

ändert dieses:

elem5 = driver.find_element_by_tag_name("a.btn_left") 

Um dies:

elem5 = driver.find_element_by_css_selector("a.btn_left") 

Sie werden so gut wie nie tag_name verwenden, vor allem, weil es immer den ersten Tag abrufen Sie es passieren, so "a" finde immer den ersten Link und klicke darauf, deiner jedoch existiert nicht.

0

Ich habe es mit diesem Code gelöst. Ich habe die Zeit auf 20 Sekunden erhöht, ob du es glaubst oder nicht, ich habe den Fund von CSS versucht, ich habe die a.btn_left tatsächlich verlassen und bin durch alle Elemente gecycelt worden, und keiner von ihnen funktionierte glücklicherweise durch Tab und Taste funktioniert so, dass das jetzt funktioniert.

time.sleep(20) 
driver.get("https://wfbs-svc-nabu.trendmicro.com/wfbs-svc/portal/en/view/cm") 
elem5 = driver.find_element_by_link_text("Devices") 
elem5.send_keys(Keys.ENTER) 
+0

Stellen Sie sicher, dass Sie Ihre Antwort akzeptieren! –

Verwandte Themen