2015-04-14 13 views
5

Od dawna szukam rozwiązania mojego problemu, mam nadzieję, że ktoś może wymyślić coś, co może pomóc.Firefox widzi element, w którym PhantomJS nie używa Selenium-Webdriver

Mam działający skrypt selenowy (w języku Python) współpracujący ze sterownikiem Firefox do łączenia się ze stroną internetową. Gdy używasz PhantomJS jako sterownika, to już nie działa.

Formularz jest generowany przez javascript i znajduje się na stronie https. Oto kod wejścia użytkownika:

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

Oto część skryptu, patrząc na to: (działa na Firefox, ale nie 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() 

I tu jest błąd pojawia się:

selenium.common.exceptions.NoSuchElementException 

Gdybym wydrukować page_source tylko po osiągnięciu stronę, Firefox pokazuje kod źródłowy w prawo, gdzie PhantomJS ma tylko: <html><head></head><body></body></html>

Czy myślisz o czymś, co może być tego przyczyną?

+1

Czy możesz pokazać nam próbkę kodu, a nie tylko element? Czy używasz Pythona lub Javy? Nie sądzę, że istnieją powiązania JavaScript dla selenu. –

+0

ten błąd oznacza, że ​​nie ma tagów do wyodrębnienia. możesz napisać 'page_source' i sprawdzić to ręcznie, jeśli jest tam tag. – nickanor

+0

Edytowałem dla próbki kodu. Próbowałem również z find element po nazwie i xpath. Oba działały z Firefoxem, ale nie PhantomJS. (Na pytonie) – zigoingoin

Odpowiedz

5

Mam rozwiązać mój problem dzięki Artjom B. Odpowiedź:

wystarczy zmienić w kodzie:

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

Wynikało to certyfikat SSL chyba.

+1

Możesz podać link do źródła, z którego otrzymałeś odpowiedź. –

+0

Gdzie jest link? – Max

+0

Trochę styczny: jeśli używasz bezgłowego webhosta PhantomJS, wyrzuć to polecenie podczas uruchamiania serwera: ie. '' 'phantomjs --webdriver = 8643 --ignore-ssl-errors = true''' Dla mnie to rozwiązało błędy Mink ElementNotFoundException, które otrzymywałem podczas uruchamiania testów Behat na bazie adresu URL https z samopodpisanym certyfikatem. – aaronbauman