Ich habe mich schon ziemlich lange umgesehen, um eine Lösung für mein Problem zu finden, hoffe, dass jemand hier über etwas nachdenken kann, das helfen könnte.Firefox sieht Element, wo PhantomJS nicht funktioniert, wenn Selenium-Webdriver
Ich habe ein funktionierendes Selenium-Skript (in Python), das mit dem Firefox-Treiber funktioniert, um auf einer Website zu verbinden. Wenn Sie PhantomJS als Treiber verwenden, funktioniert es nicht mehr.
Das Formular wird von Javascript generiert und befindet sich auf einer https-Website. Hier ist der Code der Benutzereingabe:
<script language="JavaScript1.2">
document.writeln("<input class=\"textform\" type=\"text\" id=\"user\" name=\"user\" size=\"" + size + "\" tabindex=1 onFocus=\"hadFocus(true)\">");
</script>
Hier wird der Teil des Skripts für sie suchen: (Arbeit an Firefox aber nicht PhantomJS)
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Firefox()
driver.get([MY URL])
print driver.page_source
driver.find_element_by_id("user").clear()
driver.find_element_by_id("user").send_keys([MY USER ID])
driver.find_element_by_id("pass").clear()
driver.find_element_by_id("pass").send_keys([MY PASS])
driver.find_element_by_name("login_btn").click()
html_source = driver.page_source
print html_source
driver.close()
Und hier ist der Fehler, den ich erhalten:
selenium.common.exceptions.NoSuchElementException
Wenn ich die page_source
nur nach Erreichen der Seite zu drucken, zeigt Firefox die richtige Quellcode, wo PhantomJS nur hat: <html><head></head><body></body></html>
Denken Sie an etwas, was die Ursache dafür sein könnte?
Können Sie uns das Codebeispiel zeigen, nicht nur das Element? Ist es Python oder Java, die Sie verwenden? Ich glaube nicht, dass es Javascript-Bindungen für Selen gibt. –
Der Fehler bedeutet, dass kein Tag/s extrahiert werden muss. Sie können die 'page_source' schreiben und sie manuell überprüfen, wenn das Tag dort ist. – nickanor
habe ich für das Codebeispiel bearbeitet. Ich habe auch versucht, Element nach Name und XPath zu finden. Beide arbeiteten mit Firefox, aber nicht mit PhantomJS. (Auf Python) – zigoingoin