2015-04-14 18 views
5

Mi sono guardato intorno da un po 'di tempo per trovare una soluzione al mio problema, spero che qualcuno qui possa pensare a qualcosa che potrebbe aiutare.Firefox vede l'elemento in cui PhantomJS non funziona quando si usa Selenium-Webdriver

Ho uno script di selenio funzionante (in Python) che funziona con il driver di Firefox per connettersi su un sito web. Quando si utilizza PhantomJS come driver, non funziona più.

Il modulo è generato da javascript e si trova su un sito Web https. Ecco il codice del input dell'utente:

<script language="JavaScript1.2"> 
document.writeln("<input class=\"textform\" type=\"text\" id=\"user\" name=\"user\" size=\"" + size + "\" tabindex=1 onFocus=\"hadFocus(true)\">"); 
</script> 

Qui è la parte dello script in cerca di esso: (a lavorare su Firefox, ma non 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() 

E qui è l'errore che ottengo:

selenium.common.exceptions.NoSuchElementException 

se stampo il page_source solo dopo aver raggiunto la pagina di Firefox mostra il codice sorgente di destra, dove PhantomJS ha solo: <html><head></head><body></body></html>

Pensa a qualcosa che potrebbe essere la causa di questo?

+1

Puoi mostrarci il codice di esempio, non solo l'elemento? È Python o Java che stai usando? Non penso che ci siano collegamenti Javascript per il selenio. –

+0

l'errore significa che non ci sono tag/s da estrarre. puoi scrivere 'page_source' e controllarlo manualmente se il tag è lì. – nickanor

+0

Ho modificato per il codice di esempio. Ho anche provato con find elemento per nome e xpath. Entrambi hanno funzionato con Firefox ma non con PhantomJS. (Su Python) – zigoingoin

risposta

5

ho risolto il problema grazie a Artjom B. risposta:

Basta cambiare il codice:

driver = webdriver.PhantomJS(service_args=['--ignore-ssl-errors=true']) 

esso è dovuto al certificato SSL immagino.

+1

Puoi fornire un link di riferimento da cui hai ottenuto la risposta. –

+0

Dov'è il link? – Max

+0

Un po 'tangente: se si esegue un webdriver PhantomJS senza testa, lancia questo comando all'avvio del server: es. '' 'phantomjs --webdriver = 8643 --ignore-ssl-errors = true''' Per me, ho risolto gli errori di Mink ElementNotFoundException che stavo ottenendo eseguendo Behat test su un URL di https con certificato autofirmato. – aaronbauman

Problemi correlati