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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python+Selenium学习笔记8 - 多表单多窗口切换

發布時間:2024/4/14 python 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python+Selenium学习笔记8 - 多表单多窗口切换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.多表單切換

下圖為待測頁面:內嵌百度首頁

切換到百度首頁進行操作

1 # coding = utf-8 2 3 from selenium import webdriver 4 import os 5 import time 6 7 dr = webdriver.Firefox() 8 file_path = 'file:///' + os.path.abspath('frame.html') 9 dr.get(file_path) 10 11 # 切換到iframe(id="if") 12 dr.switch_to.frame("if") 13 14 dr.find_element_by_id("kw").send_keys("selenium") 15 dr.find_element_by_id("kw").submit() 16 time.sleep(3) 17 18 dr.close()

switch_to.frame()可以直接取表單的id或name屬性。如果iframe沒有可用的id和name屬性。可用以下方式進行定位

......# 先通過xpath定位到iframe xf = driver.find_element_by_xpath('//*[@class="if"]')# 再將定位對象傳給switch_to.frame()方法 driver.switch_to.frame(xf) ...... driver.switch_to.parent_frame()

還有其他方法switch_to.parent_content(), switch_to.default_content()

這些方法我都沒用過

?

2.多窗口切換

以百度首頁的登錄為例,在百度首頁點擊【登錄】,彈出登錄窗口,點擊右下角的【立即注冊】,跳轉到注冊頁面,再返回首頁搜索

1 # coding = utf-8 2 3 from selenium import webdriver 4 import time 5 6 dr = webdriver.Firefox() 7 dr.implicitly_wait(10) 8 dr.get("http://www.baidu.com") 9 10 # 獲得百度搜索窗口的句柄 11 search_window = dr.current_window_handle 12 13 dr.find_element_by_xpath('/html/body/div[1]/div[1]/div/div[3]/a[7]').click() # 這里試過用class和name去定位都不行 14 time.sleep(3) 15 dr.find_element_by_link_text('立即注冊').click() # 常試過用這個方法定位左下角的“用戶名登錄”,但是定位不到 16 time.sleep(3) 17 18 # 獲得當前所有打開的窗口的句柄 19 all_handles = dr.window_handles #這里得出的是一個list,有兩個元素的list,一個是首頁的句柄,一個是立即注冊的句柄 20 21 22 # 進入注冊窗口 23 for handle in all_handles: 24 if handle != search_window: #循環到的句柄不是首頁的句柄,就是注冊的句柄 25 dr.switch_to.window(handle) #switch_to.window()用于切換到相應的窗口 26 print('now register window!') 27 dr.find_element_by_name("userName").send_keys("username") 28 dr.find_element_by_name("phone").send_keys("12345678909") 29 time.sleep(5) 30 31 # 回到搜索窗口 32 for handle in all_handles: 33 if handle == search_window: 34 dr.switch_to.window(handle) 35 print("now search window!") 36 dr.find_element_by_id("TANGRAM__PSP_2__closeBtn").click() #首頁懸浮窗口的右上角的關閉按鈕 37 dr.find_element_by_id("kw").send_keys("selenium") 38 dr.find_element_by_id("kw").submit() 39 time.sleep(5) 40 41 dr.quit()

?

?

?

綜上

switch_to.window() 用于切換到相應的窗口

switch_to.frame() 用于切換到相應的表單

?

?

轉載于:https://www.cnblogs.com/sue2015/p/9043602.html

總結

以上是生活随笔為你收集整理的Python+Selenium学习笔记8 - 多表单多窗口切换的全部內容,希望文章能夠幫你解決所遇到的問題。

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