如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里
我也是剛學(xué)自動(dòng)化,在自學(xué)過程中發(fā)現(xiàn)瀏覽器中有一些彈窗元素,無法定位。經(jīng)過自己的摸索,有一些心得,寫下來供日后自己回顧。
首先要確定彈窗的類型:
(1)div彈窗
(2)新標(biāo)簽頁彈窗
(3)alert彈窗
一,div彈窗
div彈窗是瀏覽器中比較好定位的彈窗,定位的方法與普通的元素一樣。不過這里會(huì)有一個(gè)坑,明明可以找到這個(gè)按鈕,但是就是定位不到。這個(gè)就是因?yàn)楫?dāng)前有div彈窗彈出的時(shí)候,需要設(shè)置一下等待時(shí)間,等頁面元素加載完畢,再去做其他操作。
這里用百度登陸為例子:
from selenium import webdriver import time def login_baidu(url,username,password): driver.get(url)
driver.find_element_by_xpath('//*[@id="u1"]/a[7]').click()
time.sleep(2)
driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__footerULoginBtn"]').click()
time.sleep(2) login_username = driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__userName"]')
login_username.click()
login_username.send_keys(username)
login_passwork = driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__password"]')
login_passwork.click()
login_passwork.send_keys(password)
driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__submit"]').click() if __name__ == "__main__":
driver = webdriver.Firefox()
username = r'xxx@qq.com' password = r'xxxx' url = r'https://www.baidu.com' login_baidu(url,username,password)
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
二,新標(biāo)簽頁彈窗
新標(biāo)簽頁彈窗,則需要進(jìn)行窗口的切換。此處第一個(gè)窗口打開百度首頁,在打開一個(gè)新窗口打開京東首頁,在兩個(gè)窗口之間進(jìn)行切換。切換到不同的窗口之后,就可以用常規(guī)的方法進(jìn)行元素的定位。
from selenium import webdriver import time def open_window1(): driver.get("https://www.baidu.com")
time.sleep(2) def open_window2(): js = "window.open('https://www.jd.com')" driver.execute_script(js)
time.sleep(2) def Switch_Window(): handles = driver.window_handles
print("打印當(dāng)前已打開的窗口:"+str(handles)) while(5): driver.switch_to.window(handles[0])
time.sleep(5)
driver.switch_to.window(handles[1])
time.sleep(5) if __name__ == "__main__" :
driver = webdriver.Firefox()
open_window1()
open_window2()
Switch_Window()
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
handles = driver.window_handles # 獲取當(dāng)前打開的所有窗口的句柄
driver.switch_to.window(handles[N]) # 切換到其中一個(gè)窗口
其中,獲取的句柄下標(biāo)從0開始,即第一個(gè)窗口為[0]、第二個(gè)窗口為[1],如此類推。使用switch_to.window方法切換到新標(biāo)簽頁后就可以做其他操作了。
三、alert彈窗
該類型的彈窗暫沒有合適的項(xiàng)目進(jìn)行練習(xí),待后續(xù)完善
藍(lán)藍(lán)設(shè)計(jì)( www.teruid.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。