日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

web自动化--窗口切换

發布時間:2023/12/19 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 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自动化--窗口切换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。