selenium多表單操作與多窗口,以及警告框處理
阿新 • • 發佈:2018-10-14
itl 很快 hand phone from close 註冊頁面 需要 http
知識是需要經常溫習的,不然是很容易遺忘的。
以前自己操作IFRAME,多窗口的時候,覺得很簡單。半年沒有操作自動化了,知識又還了回去。
寫博客有一個好處,可以把自己記住的知識點記錄下來,這樣,以後自己來翻看的時候,可以很快的找到思路。
畢竟自己不是大神,所以還是多記錄一下。
一,多表單切換:
例子:
driver.switch_to.iframe(""if"")
driver.find_element_by_css_selector("[name=kw].").click()
switch_to.frame()默認可以直接取表單的ID,name屬性。如果iframe沒有可用的id,name屬性,則可以通過下面的方式進行的定位。
xf=driver.find_element_by_css_selector(".class") #先通過CSS定位到iframe
driver.switch_to.frame(xf) ##再將定位對象傳給switch_to.frame()方法。
driver.find_element_by_css_selector(".class") ###再來操作元素。
driver.switch_to.parent_frame() ###完成了再當前表單上的操作,則跳出當前一級表單。
多窗口操作:
from selenium import webdriver
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
import time
driver.get("https://www.baidu.com/")
#獲取當前頁面句柄
current_handle=driver.current_window_handle
driver.find_element_by_css_selector("div#u1>a:nth-child(7)").click()
driver.find_element_by_link_text(u"立即註冊").click()
time.sleep(1)
#獲得當前所有打開窗口的句柄
all_handles=driver.window_handles
#進入註冊頁面窗口
for handle in all_handles:
if handle!=current_handle:
driver.switch_to_window(handle)
driver.find_element_by_css_selector("[name=userName]").clear()
driver.find_element_by_css_selector("[name=userName]").send_keys("username")
driver.find_element_by_css_selector("[name=phone]").clear()
driver.find_element_by_css_selector("[name=phone]").send_keys(1313313)
time.sleep(1)
#回到百度搜索頁面
for handle in all_handles:
if handle==current_handle:
driver.switch_to_window(current_handle)
driver.find_element_by_css_selector("#TANGRAM__PSP_4__closeBtn").click()
time.sleep(1)
driver.find_element_by_css_selector("#kw").send_keys("selenium")
driver.find_element_by_css_selector("#su").click()
time.sleep(2)
driver.quit()
直接上例子,看的更直觀些。
selenium多表單操作與多窗口,以及警告框處理