先要確定是不是alert,是才能用,不是的話肯定不能用。
-
有些彈出框是div層,這種跟平常定位方法一樣
-
有些彈出框是嵌套的iframe層,這種切換iframe就可以了
-
有些彈出框比較坑,是嵌入的一個窗口,這就是本篇要講的內容了。
如下圖這種,看似普通的一個彈出框
2.遇到這個問題做了以下嘗試:
- 首先,這種肯定不是alert,所以不能用alert去定位
- 然后看看是不是有iframe,查看元素后,發現沒有iframe
- 前面加了sleep時間等待也無法解決
解決問題
1.通過打印獲取全部的窗口,發現居然打印的是兩個handle,也就是說,這個表面上看起來是一個窗口,實際上內嵌了另外一個窗口了。
# 打印所有的handle all_handles = driver.window_handles print(all_handles) # 切換到新的handle上 driver.switch_to.window(all_handles[1])
2.找到問題原因,接下來就簡單了,先切換到新的窗口上,然后用平常的定位方法就可以了