2013-04-24 51 views
1

我有這樣的HTML代碼,我proccesing /用python腳本再殺:調用JavaScript函數在Python - 硒

<a href="javascript:VerMapa('AVDA. DE AMERICA, 2 -33880 POLA DE ALLANDE','RODRIGUEZ-PELAEZ PEÑA, ANA MARIA','AVDA. DE AMERICA, 2 -33880','33880','ALLANDE','183','178')"><img src="../../Fijos/Img/VerMapa.jpg" alt="" width="25" height="24" border="0">&nbsp;<br>Ver Mapa</a> 

這是函數的定義:

function VerMapa(direccion,farmacia,domicilio,CP,municipio, numeroOficina,identidad) { 
    window.open("googleMaps.aspDir="+direccion+"&Far="+farmacia+"&Dom="+domicilio+"&CP="+CP+"&Mun="+municipio+"&NO="+numeroOficina+"&Id="+identidad+"&",'Lista','toolbar=no, menubar=no, scrollbars=yes,resizable=yes,status=yes,screenX=50,top=50,width=740,height=530'); 
} 

我需要在href屬性中調用VerMapa('AVDA. DE AMERICA, 2 -33880 POLA DE ALLANDE','RODRIGUEZ-PELAEZ PEÑA, ANA MARIA','AVDA. DE AMERICA, 2 -33880','33880','ALLANDE','183','178') javascript函數並獲取返回的HTML代碼。

我檢查了蜘蛛猴和PyV8,但我認爲他們不能幫助我。蜘蛛猴清楚地告訴你不能調用一個javascript定義的函數。

我正在嘗試使用Selenium,但我不知道如何將源代碼返回到python。

知道我剛剛實現了一個測試腳本,並設法在瀏覽器窗口中加載請求的頁面。

from selenium import webdriver 
browser = webdriver.Firefox() 
browser.get("http://www.farmasturias.org/GESCOF/cms/Guardias/FarmaciaBuscar.asp?IdMenu=111") 
htmlCode = browser.execute_script("return VerMapa('AVDA. DE AMERICA, 2 -33880 POLA DE ALLANDE','RODRIGUEZ-PELAEZ PEÑA, ANA MARIA','AVDA. DE AMERICA, 2 -33880','33880','ALLANDE','183','178')") 
print htmlCode; 

1.-我沒有得到任何htmlcode var。 ¿如何取回由javascript函數生成的源代碼?我採取了這篇文章的語法Getting the return value of Javascript code in Selenium

2.-有什麼辦法可以在不打開任何瀏覽器窗口的情況下使用Selenium?

+0

我已經嘗試了與java相同的代碼並填充了一個新的彈出窗口。在執行javascript並使用print htmlCode之後,是否需要顯示地圖的彈出窗口的html源代碼? – Hemanth 2013-04-24 10:44:54

+0

也許我不清楚。該代碼彈出一個新窗口,其中包含期望的內容,但htmlCode var中沒有返回任何內容。我試圖在該頁面的源代碼中加入var。 – 2013-04-24 11:42:56

+0

@DavidCasillas你想要主頁面的源代碼還是新打開的彈出窗口? – Hemanth 2013-04-25 08:18:58

回答

1

VerMapa函數沒有返回。這就是爲什麼你的htmlCode變量不顯示任何內容。

要獲得新窗口的來源,請先撥打VerMapa,然後切換到新窗口,然後獲取源代碼。

# get all open windows 
handles = set(broswer.window_handles) 

# remove the current window from the set 
handles.remove(browser.current_window_handle) 

# switch to the other window 
browser.switch_to_window(handles.pop()) 

# get the source of that window 
htmlCode = browser.page_source