selenium基础笔记

1)获取断言信息的操作
current_url 获取当前访问页面url print(driver.current_url)
title 获取当前浏览器标题 print(driver.title)
page_source 网页源码 print(driver.page_source)
get_screenshot_as_file(‘file’) 直接保存页面
print(driver.get_screenshot_as_file(‘123.jpg’))

2)元素定位分类法
直接调用型(推荐)
from selenium import webdriver
drive.find_element_by_***(value)
使用By类型
from selenium.webdriver.common.by import By 导入模块
driver.find_element(By.***,value) 注:***大写

3)8种定位方法
id id定位
name name属性值定位
class name 伪类名定位
tag name 标签类定位
link text 链接文本定位
partial link text 部分链接文本
xpath xpath路径
css selector css选择器

4)定位一组元素
driver.fing_elements_by_***(vlaue)

5)元素的操作
element=driver.find_elements_by_***(vlaue)
element.click() 点击
element.clear() 清除输入框
element.send_keys(data) 输入数据
element.text 获取文本内容
element.get_atrribute(value) 获取element元素的value属性值

6)多个窗口标签切换
handles=driver.window_handles 该方法会得到一个列表,每一个窗口都有一个对应的值放在里面
driver.switch_to.window(handles[n]) n代表上一个列表存放的第n个窗口的值

7)多表单切换
遇到iframe/frame,无法定位到iframe/frame内部的位置,只能定位到iframe/frame
方法①driver.switch_to.frame(value) 注:value为id值,前提是有id,没有就用第②种方法
方法②el=driver.find_elelment_by_***(value)
driver.switch_to.frame(el)

8)多表单退出
driver.switch_to.defalult_content() 跳回到最外层页面
driver.switch_to.parent_frame() 跳回上层页面

9)常见的定位失败原因
①未加等待时间
②frame/iframe内部无法定位等原因
③class_name定位时,value值中包含空格时,需要将空格转换成英文格式的点。
④直接用id或name定位时,可能会出现无法点击,需拥css或xpath从上一层开始

注:os库获取本地文件绝对路径
filepath=os.path.abpath(‘123.jpg’)

10)鼠标操作
from selenium.webdriver import ActionChain 导入模块
ActionChain(driver) 动作链储存鼠标动作
perform() 执行
context_click(el)对el元素进行右击操作
例:ActionChain(driver).comtext_click(el).perform 鼠标右击
ActionChain(driver).move_to_element(el).perform 鼠标悬停

11)鼠标操作
from selenium.webdriver.common.key import Key
find_element_by_***(value).send_keys(Keys.BACK_SPACE) 删除键
find_element_by_***(value).send_keys(Keys.CONTROL,‘c’) 复制(contrl+c)

注:driver.switch_to.alert.accept() 进入警告框,并且点击接受
driver.switch_to.alert.accept() 进入警告框,并且解散警告框

12)下拉框操作
from selenium.webdriver.support.select import Select
selobj=Select(element) 定位下拉框,将下拉框元素传入select类中
selobj.select_by_index(0) 通过索引选择,index索引从0开始
selobj.select_by_value(‘’) 通过属性值选择
selobj.select_by_visible_text(’
’) 通过文本选择
selobj.all_selected_options 查看所有已选
selobj.first_selected_option 查看第一个已选
selobj.is_multiple 查看是否是多选
selobj.options 查看选项元素列表

注:selenium没有滚动条操作方法,要用JavaScript实现,以下是调用js代码,进行滚动条操作。
方法①:js=‘window.scrollTo(x,y)’ x为水平拖动距离。y为垂直拖动距离
方法②:js=‘var q=document.documentElement.scroll Top=n’ n为从上到下拖动大小
然后:driver.execute_script(js) 执行js代码

13)隐式等待
driver.implicitly_wait(n) n的单位为秒,n为最大值,在这个n秒内,浏览器加载完毕才会结束等待

14)显示等待
导入By:
from selenium.webdriver.common.by import By
导入webdriver等待:
from selenium.webdriver.support.ui import WebDriverWait
导入预期条件:
from selenium.wendirver.support import expected_conditions as EC

例:
WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located(By.ID,‘lg’))
driver.find_element_by_id('lg).click
等10秒,每0.5秒检测一次id的值为lg是否出现,出现则结束等待

15)强制等待
import time 导入模块
time.sleeo(10) 强制等待10秒

16)cookies操作
driver.get_cookies() 获取所有cookies
driver.add_cookie(cookie_dict) 添加cookie值
driver.delete_all_cookies() 删除所有cookie

17)unitest模块
1、unitest.main()运行时,框架自动寻找Testcase子类,并且运行。
2、在Testcase类中,只把以test开头的方法当作测试用例,然后执行,以def test_001(self):类似开头。

test fixture
test case
test suite
test runner

unittest 断言
assertEqual() 判断预期 assertEqual(value1,value2)
assertTrue(),assertFalse 做是非判断
assertIn(‘a’,‘b’)判断a是否在b中

断言失败情况:
1、“用户名或密码有误,请重新输入或找回密码”,这句话可能会断言失败。将这句话整体进行断言是不行的,因为找回密码和其他不是一个目录下,仅断言找回密码即可。或者在断言前加time.sleep(5)也行,但不知原因。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值