一、多个窗口的切换
以百度为例:打开百度是一个窗口,点击登录》立即注册,就会打开第二个窗口,如何让两个窗口进行切换?
先获取当前打开所有窗口的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')