我有一个使用window.showmodaldialog通过javascript生成页面的网站。当使用Selenium IDE和firefox时,我被迫monkeypatch javascript插入一个新函数来从对话框中返回值,将window.showmodaldialog转换为window.open,
driver.execute_script("function setRetVal(mval) { window.myreturnval = mval; }")
driver.execute_script("window.showModalDialog = function( sURL,vArguments, sFeatures) { if(window.myreturnval!=null) { var winarg = window.myreturnval; window.myreturnval = null; return winarg; } modalWin = window.open(sURL, vArguments, sFeatures); return false; }")
并修改onbeforeupload以将结果发回。
driver.execute_script("window.onbeforeunload = function() { window.opener.setRetVal(window.returnValue); } ")
我现在正在尝试转换为python + selenium webdriver以进行测试。我真的很想在测试过程中避免注入新的javascript。问题是
driver.find_element_by_id("MainContent_buttonAccountLookup").click()
触发此代码
<a href="#" id="MainContent_buttonAccountLookup"
onclick="javascript:callLookup('
Account','<
%=textBoxAccountName.ClientID %>','<%=hiddenFieldAccountId.ClientID %>')
;return false;">
<img alt="Account Lookup" src="../Images/search.GIF" border="0" />
</a>
在窗口关闭之前不会将控制权释放回python脚本。
如何启动点击以便我可以控制新窗口,执行步骤并关闭它?
答案 0 :(得分:0)
打开后可以切换到新窗口:
current_window = driver.current_window_handle
for handle in driver.window_handles:
if handle != current_window:
driver.switch_to_window(handle)
// perform actions
// close window
driver.switch_to_window(current_window)