2015-04-14 7 views
5

Sorunumda bir çözüm bulmak için epey uzun zamandır etrafta gezindim, buradaki bir kişinin yardım edebilecek bir şey hakkında düşünmesini umuyoruz.Firefox, Selenyum-Webdriver'ı kullanırken PhantomJS'nin bulunmadığı bir elemanı görüyor

Bir web sitesine bağlanmak için Firefox sürücüsü ile çalışan bir çalışma selenyum komut dosyası (Python'da) var. PhantomJS'yi sürücü olarak kullanırken artık çalışmıyor.

Form, javascript ile oluşturulur ve bir https web sitesinde bulunur. İşte

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

komut onu arıyor parçası olduğu: Burada kullanıcı girişi kodudur (firefox ancak PhantomJS üzerinde çalışıyor)

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() 

Ve burada olsun hatadır: <html><head></head><body></body></html>

012: Ben sadece bu sayfaya ulaştıktan sonra page_source yazdırırsanız

selenium.common.exceptions.NoSuchElementException 

Firefox PhantomJS yalnızca vardır sağ kaynak kodunu gösterir

Bunun nedeni olabilecek bir şey düşünüyor musunuz?

+1

Bize sadece öğeyi değil, kod örneğini gösterebilir misiniz? Kullandığınız Python veya Java mı? Selenyum için Javascript bağları olduğunu sanmıyorum. –

+0

hata, ayıklanacak hiçbir tag/s olmadığı anlamına gelir. "page_source" yazıp etiketiniz varsa manuel olarak kontrol edebilirsiniz. – nickanor

+0

Kod örneği için düzenledim. Ayrıca isim ve xpath ile bulma elemanı ile çalıştı. Her ikisi de Firefox ile çalıştı ama PhantomJS değil. (Python'da) – zigoingoin

cevap

5

Ben Artjom B. cevaba benim sorunum sayesinde çözmüş:

Sadece kodunda değiştirin:

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

Sanırım ssl sertifikası kaynaklanıyordu.

+1

Bu cevabı aldığınız yerde referans için bir bağlantı sağlayabilirsiniz. –

+0

Bağlantı nerede? – Max

+0

Biraz teğetsel: Eğer başsız bir PhantomJS webdriver çalıştırıyorsanız, sunucuyu başlatırken bu komutu atın: örn. '' 'phantomjs --webdriver = 8643 --ignore-ssl-errors = true''' Benim için, kendinden imzalı sertifikaya sahip bir https taban url'sine karşı Behat testleri çalıştırırken karşılaştığım bu Mink ElementNotFoundException hatalarını çözdüm. – aaronbauman