1. 程式人生 > >Selenium 3----定位一組元素+多表單切換+多窗口切換

Selenium 3----定位一組元素+多表單切換+多窗口切換

web sel each switch cli sele pytho acc 進行

定位一組元素

和定位單個元素類似,WebDriver提供了8種用於定位一組元素的方法。定位一組元素的方法與定位單個元素的方法類似,唯一的區別是在單詞element後面多了一個s表示復數。

find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()

  代碼演示:

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get(‘https://www.baidu.com‘)

driver.find_element_by_id(‘kw‘).send_keys(‘selenium‘)
driver.find_element_by_id(‘su‘).click()
sleep(1)
#定位一組元素
texts = driver.find_elements_by_xpath(‘//div/h3/a‘)
#循環遍歷出每一條搜索結果的標題
for t in texts:
    print(t.text)
sleep(1) #主要目的是為了等待定位元素遍歷,不然 關閉太快抓取不到
driver.close()

  多表單切換 switch_to.frame()

多窗口切換 switch_to.window()方法

在頁面操作過程中有時候點擊某個鏈接會彈出新的窗口,這時就需要主機切換到新打開的窗口上進行操作。

current_window_handle:獲得當前窗口句柄。

window_handles:返回所有窗口的句柄到當前會話。

switch_to.window():用於切換到相應的窗口,與上一節的switch_to.frame()類似,前者用於不同窗口的切換,後者用於不同表單之間的切換。

  

from selenium import webdriver
from time import sleep driver = webdriver.Chrome() #設置隱式等待時間為10秒 driver.implicitly_wait(10) driver.get(https://www.baidu.com) # 獲得百度搜索窗口句柄 sreach_windows = driver.current_window_handle driver.find_element_by_link_text(登錄).click() driver.find_element_by_link_text("立即註冊").click() #獲得當前所有打開的窗口的句柄 all_handles=driver.window_handles #進入註冊窗口 for handle in all_handles: if handle != sreach_windows: driver.switch_to.window(handle) print(now register window!) driver.find_element_by_name("account").send_keys(username) driver.find_element_by_name(password).send_keys(password) sleep(2) #會報錯 driver.quit()

Selenium 3----定位一組元素+多表單切換+多窗口切換