一、多個窗口的切換
以百度為例:打開百度是一個窗口,點擊登錄》立即注冊,就會打開第二個窗口,如何讓兩個窗口進行切換?
先獲取當前打開所有窗口的handles,用到handles=driver.window_handles,此時handles是列表格式
再使用索引,切換到指定的窗口用到driver.switch_to.windows(handles[索引值]),索引值從0開始計算
from selenium import webdriver from time import sleep driver=webdriver.Chrome() driver.get('https://www.baidu.com/') sleep(1) #切換窗口 driver.find_element_by_link_text('登錄').click() sleep(2) driver.find_element_by_link_text('立即注冊').click() sleep(2) handles=driver.window_handles # print(type(handle),len(handle)) # driver.switch_to_window(handle[1])此方法不適用 driver.switch_to.window(handles[0])#切換窗口 sleep(1)
driver.quit()
二、自己將8種定位方法函數化與By模塊的比較
#自己定義的函數 def findElement(driver,key,value): if key=="id":#通過id定位 element=driver.find_element_by_id(value) if key=="calss_name":#通過class定位 element = driver.find_element_by_calss_name(value) if key=="name":#通過name定位 element = driver.find_element_by_name(value) if key=="tag_name":#通過tag定位 element = driver.find_element_by_tag_name(value) if key=="link_text":#通過link定位 element = driver.find_element_by_link_text(value) if key=="xpath":#xpath路徑定位 element = driver.find_element_by_xpath(value) if key=="css_selector":#通過css定位 element = driver.find_element_by_css_selector(value) return element
#By和自己寫的元素定位方法的區別 from selenium.webdriver.common.by import By element=driver.find_element(By.ID,'kw')#每次都要重復寫driver.find_element(...) element.send_keys("楊迅") # from ANN.common_model import * # element1=findElement(driver,"id","kw")#直接調用函數,簡單 # element1.send_keys("yang")
三、瀏覽器其他的操作,設置窗口大小,前進后退,截屏,直接見代碼
from selenium import webdriver from time import sleep driver=webdriver.Chrome() driver.get('https://www.baidu.com/') sleep(2) # #瀏覽器返回上一頁 # driver.back() # sleep(3) # #瀏覽器切換到下一頁 # driver.forward() # sleep(2) # #設置窗口大小 # driver.set_window_size(540,960) # sleep(1) # driver.maximize_window() # sleep(2) # #截屏 # driver.get_screenshot_as_file(r'F:\截圖\b2.png')