selenium基础知识
1. 八大定位元素法则
- id
- name
- link text:a标签的text内容
- partial link text:a标签的text内容的模糊查找
- tag name: 一般不用于测试,用于爬虫
- class name: 基于元素class 属性进行定位
- css selector 基于css样式定位
- xpath基于html结构定位
2. xpath的定位法则
- //从根路径下查询
- *任意元素,也可以直接输入标签名字
- []筛选条件
- @元素的属性
- text()通过文本定位
- [contains()]表示调用contains函数,进行内容的模糊查找
3. 相对定位器
- 上:driver.find_elements(locate_with(By.TAG_NAME,'标签名称')).above(element)
- 下:driver.find_elements(locate_with(By.TAG_NAME,'标签名称')).below(element)
- 左:driver.find_elements(locate_with(By.TAG_NAME,'标签名称')).to_left_of(element)
- 右:driver.find_elements(locate_with(By.TAG_NAME,'标签名称')).to_right_of(element)
- 附近:driver.find_elements(locate_with(By.TAG_NAME,'标签名称')).near(element)
4. 元素的操作
- 访问文件或者网页:driver.get()
- 窗体最大化/最小化:driver.maximize_window()/driver.minimize_window()
- 浏览器前进/后退/刷新:driver.foward()/driver.back()/driver.fresh()
- 获取title:driver.title
- 元素定位:el=driver.find_element():返回的是第一个元素/driver.find_elements():返回的是列表,找到所有符合条件的元素
- 点击操作:el.click()
- 输入文本或者文件上传(文件上传如果是input标签直接使用send_keys()):el.send_keys()
- 鼠标悬停:ActionChains(driver).move_to_element(el).perform()
- 对下拉框操作:
- 对于标签为input的下拉框:一般使用send_keys()操作
- 对于其他标签的下拉框:一般使用click()操作
- 对于标签为select的下拉框
from selenium.webdriver.support.select import Select driver=webdriver.Chrome() #调用select类 select=Select(el) #通过下标选择 select.select_by_index() #通过value值选择 select.select_by_value() #通过文本选择 select.select_by_visible_text()
- 退出浏览器:driver.quit()
5. 句柄与frame
- 每一个页面就是一个句柄,selenium访问新页面的时候都默认还停留在老页面
- 句柄获取:handles=driver.window_handles
- 切换句柄:driver.switch_to.window(handles[])
6. iframe处理
- 如果元素在iframe中,要先切换至iframe再对元素进行定位
- driver.switch_to.frame()
- 切换回默认窗体,调回frame之外的内容:driver.switch_to.default_content()
7. selenium新增功能
- 自动生成新的标签页并切换过去 driver.switch_to.new_window('tab')
- 自动生成新的浏览器并切换过去 driver.switch_to.new_window('window')