首先要确定弹窗的类型。
弹出窗口基本上有如下三种实现方式:
(1)div弹窗
(2)新标签页弹窗
(3)alert弹窗
针对不同类型的弹窗,相应采取不同的定位措施。
由于不知问题中实际的弹窗类型,在此笼统说下:
1、div弹窗
对于此类弹窗,可以直接用 find_element_by_... 得到 div 窗口中各元素,再进行操作即可,需要注意的一点是,需要等 div 窗口元素加载完毕之后,再去获取窗口中的元素。
2、新标签页弹窗
新标签页弹窗,则需要进行窗口的切换。从图片看,问题中的弹窗应该不属于此类弹窗。
3、alert弹窗
此类弹窗是由 js 执行 alert、confirm、prompt等生成的弹窗,其应对方法是:
使用 switch_to.alert() 方法定位到 alert/confirm/prompt,然后使用text/accept/dismiss/send_keys 方法进行操作。
切换到新窗口,再定位元素print browser.current_window_handle # 输出当前窗口句柄(百度)
handles = browser.window_handles # 获取当前窗口句柄集合(列表类型)
for handle in handles:# 切换窗口(切换到搜狗)
if handle!=browser.current_window_handle:
print 'switch to ',handle
browser.switch_to_window(handle)
print browser.current_window_handle # 输出当前窗口句柄(搜狗)
break