1

私はPythonスクリプトで処理/廃棄しているこのHTMLコードを持っています:

<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');
}

VerMapa('AVDA. DE AMERICA, 2 -33880 POLA DE ALLANDE','RODRIGUEZ-PELAEZ PEÑA, ANA MARIA','AVDA. DE AMERICA, 2 -33880','33880','ALLANDE','183','178')href 属性で javascript 関数を呼び出し、返された HTML コードを取得する必要があります。

Spider-monkey と PyV8 を確認しましたが、ここでは役に立たないと思います。Spider-monkey は、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 変数で何も得られません。javascript 関数によって生成されたソース コードを取得するにはどうすればよいですか? この投稿から構文を取得しました SeleniumでJavascriptコードの戻り値を取得する

2.- ブラウザ ウィンドウを開かずに Selenium を使用する方法はありますか?

4

1 に答える 1

0

関数には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
于 2013-05-31T22:01:47.700 に答える