Selenium 3----定位一組元素+多表單切換+多窗口切換
阿新 • • 發佈:2019-03-26
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 webdriverfrom 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----定位一組元素+多表單切換+多窗口切換