调用JavaScript函数在Python - 硒

问题描述:

我有这样的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

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