web自动化--窗口切换
窗口切換
handles = driver.window_handles ------獲取所有窗口句柄,返回的數據是一個列表類型
driver.switch_to.window(handles[-1]) -----切換窗口,因為返回的數據是列表類型,所以可以根據索引進行切換
窗口等待和window窗口切換
----點擊打開新窗口的時候,需要又一個等待的過程;避免窗口沒有打開就進行接下來的元素查找,程序報錯
WebDriverWait(driver, 30).until(EC.new_window_is_opened(before_handles))
-----等待用的還是之前說的現實等待的句式,條件換成new_window_is_opend.
-----這里的locator是before_handles,就是點擊打開新窗口之前的所有窗口句柄;理論來說,點擊打開一個新窗口后再獲取所有窗口句柄,得到的值肯定會比點擊之前多,這樣才能符合new_window_is_open這個函數。所以before_handles一定是在點擊打開新窗口這個操作之前獲取的
---獲取當前窗口句柄 driver.current_window_handle
ps:等待只是等待,不具備切換功能,即等待新窗口打開后,當前窗口句柄還是之前的,不會是新打開的那個窗口!
iframe切換
iframe切換有3種方式:索引/name/webelement
1.1 通過name切換
driver.switch_to.frame("baidu")
1.2 通過webelement切換
iframe_element = driver.find_element_by_xpath('//iframe[@name="baidu"]')
driver.switch_to.frame(iframe_element)
frame等待,等待后自動完成切換
WebDriverWait(driver, 10).until(
EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[@name="baidu"]')))
退出iframe,切換回主頁面---記住切換回主頁面,不然無法定位主頁面元素
driver.switch_to.default_content()
如果有多個iframe嵌套,如何切換到父級iframe
driver.switch_to.parent_frame()
如何判斷需要定位的元素是否在iframe里面
在瀏覽器查看源碼的時候,通過元素定位,然后查看下面元素框,如果有iframe,那么這個元素就是在iframe里面的
定位alert
1 切換到alert,switch_to后面不需要再加括號 driver.switch_to.alert
2. 點擊alert的確認按鈕 driver.switch_to.alert.accept()
3. 點擊alert的取消按鈕 driver.switch_to.alert.dismiss()
4. alert等待 WebDriverWait(driver, 10).until(EC.alert_is_present())
點擊確認或者取消后,就關閉了彈窗,直接返回的主頁面;同一時間內只會彈出一個alert
如何區分是alert還是一個普通元素----通過瀏覽器定位,可以定位到的就是元素,定位不到的就是alert
厚積而薄發,越努力越幸運!
總結
以上是生活随笔為你收集整理的web自动化--窗口切换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP Spartacus storef
- 下一篇: 抖音主页如何添加官网链接