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ą?
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. –
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
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