selenium 自动化弹出新窗口问题
在用Python+selenium做自动化时,遇到一个比较经典的问题,在调用click事件执行window.showModalDialog弹出新窗口时,父窗口会阻塞起来(直到子窗口关闭时才会解除阻塞),而webdriver此时由于执行的是父窗口的方法,因此也会阻塞来等待请求响应,而这样就造成了后面的脚本不能执行,但是前面提到,如果子窗口不关闭父窗口会一直阻塞下去,怎么办呢?解决方案是利用window.setTimeout(function() {click事件},100)这个回调函数来解决,因为执行回调函数,那么webdriver就能立即得到响应(回调函数的特性),阻塞问题随之解决,而之后再执行click方法时造成的阻塞交由浏览器来处理,也并不会将webdriver的线程阻塞.