selenium webdriver 不识别showModalDialog()的处理方案

来源:互联网 发布:知及之仁不能守之 编辑:程序博客网 时间:2024/05/16 17:41

2.1 使用js模拟打开窗口,可以正常操作新打开窗口的元素对象以及测试工
> 作,但是新窗口操作后的值无法传递给旧窗口。
> js='window.open("https://developer.mozilla.org/samples/domref/showModalDialogBox.html",\
>         "","help:Yes;dialogWidth:500px;dialogHeight:500px;");'
>         driver.execute_script(js)
>         print '新%s',driver.window_handles
>         driver.switch_to_window(driver.window_handles[-1])
>         driver.find_element_by_id('foo').send_keys('ddd')
>         driver.find_element_by_xpath('/html/body/input[2]').click()

2.2 使用pywin32发送系列键盘事件

focusJs="""

        var bb=document.getElementsByTagName("input")[0].focus();
        """
        driver.execute_script(focusJs)
        import time
        time.sleep(1)
        #发送Enter操作,差开webdriver的线程
        win32api.keybd_event(13,0,0,0)#发送Enter键
        win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0)#释放按键
    
        time.sleep(1)

        print '最新的',driver.window_handles

#        #获得当前打开的浏览器最上一层窗口的句柄
#        open_handles=win32gui.FindWindow('MozillaWindowClass',None)
#        open_title=win32gui.GetWindowText(open_handles)

2.3 执行js的click方法(最佳)

JJ="""setTimeout(function(){document.getElementsByClassName("afterimg")[0].click()},100)"""
driver.execute_script(JJ)
time.sleep(5)
print '新%s',driver.window_handles
driver.switch_to_window(driver.window_handles[-1])
print "handle:",driver.current_window_handle

原创粉丝点击