selenium多表單操作與多視窗,以及警告框處理

來源:互聯網
上載者:User

標籤:www.   切換   對象   警告   有一個   自己   預設   current   link   

知識是需要經常溫習的,不然是很容易遺忘的。

以前自己操作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多表單操作與多視窗,以及警告框處理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.