Selenium学习笔记

这里就是看完《Selenium2+Python自动化测试实战》的一些笔记,没有任何实际意义,仅做记录及分享。

find_element_by_id()     通过id定位

find_element_by_name()     通过name定位

find_element_by_class_name()     通过class的name去定位

find_element_by_tag_name()     通过标签定位tag如input

find_element_by_link_text()     用于定位文本链接<a >

find_element_by_partial_link_text()     用于定位文本链接,只要一部分信息就可以识别

find_element_by_xpath()     绝对路径定位

find_element_by_css_selector()     css选择器定位

 

定位时也可以使用逻辑与算法,即找到id和name都等于什么的元素

 

控制浏览器

driver.get(url)     打开某个url路径

driver.set_window_size(480,800)     设置浏览器的宽480高800显示

driver.maximize_window()     让浏览器全屏模式下执行

driver.back()       浏览器后退

driver.forward()     浏览器前进

 

操作元素
clear()     清除文本

send_keys(*value)     在元素上模拟按键输入

click()     单击元素

submit()     没有提交按钮时,用于提交表单

 

获取返回值

size()     返回元素的尺寸

text()     获取元素的文本

get_attribute(name)     获取属性值

is_displayes()     设置该元素是否用户可见

 

鼠标事件

perform()     执行所有ActionChains中存储的行为

context_click()     右击

double_click()     双击

drag_and_drop(a,b)     拖动a元素到b元素的位置

move_to_element()     鼠标悬停

eg:

#导入模块

from selenium.webdriver import ActionChains

driver = webdriver.Chrome()

driver.get('http:www.baidu.com')

#定位到需要右击的元素

right_click = driver.find_element_by_id('xx')

#调用ActionChains方法,将浏览器驱动driver作为参数传入,右击方法,并且perform用于提交这个动作

ActionChains(driver).context_click(right_click).perform()

键盘事件:

#引入keys模块

from selenium.webdriver.common.hyes import Keys

 

send_keys('str')     输入内容

send_keys(Keys.BACK_SPACE)     删除一个字符

send_keys(Keys.SPACE)     输入空格

send_keys(u'教程')     输入中文

send_keys(Keys.CONTROL,'a')     全选输入框内容

send_keys(Keys.CONTROL,'x')     剪切输入框内容

send_keys(Keys.CONTROL,'v')     黏贴内容到输框

send_keys(Keys.ENTER)     回车按钮

send_keys(Keys.ESCAPE)     退出按钮

send_keys(Keys.F1)     F1按键

 

获取验证信息:

driver.title     返回当前页面的title

driver.now_current_url     返回当前页面的url

 

设置元素等待:

element = WebDriverWait(driver,5,0.5).until(expected_conditions.presence_of_element_located(By.ID,'kw'))

显示等待,在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exception=None)    四个参数分别是,驱动程序,最长超时时间,休眠时间间隔,超时异常信息

until(method,message='')    调用该方法提供的驱动程序作为一个参数,直到返回true

until_not(method.message='')    调用该方法提供的驱动程序作为一个参数,指导返回False

expected_conditions.presence_of_element_located    元素是否可见

 

隐式等待

driver = webdriver.Firefox()

driver.implicitly_wait(10) #隐式等待方法

这个驱动后续的定位元素 对每一个元素都会一个有一个等待的过程,超过10s没有等到这个元素即抛出异常

 

sleep休眠方法

time.sleep(5)    针对某个页面加载进行等待5s

 

定位一组元素:

find_elements_by_id()    只是在定位一个元素的后面加s,同样有8种定位方法,返回一组元素

这组元素.pop()/pop(-1)     这组元素的最后一个元素    pop(0)    第一个元素

 

多表单切换:

在Web中遇到 frame嵌套页面时,需要切换到对应的frame才能进行元素定位

switch_to_frame('if')    切换到id或者name为 if的页面

如果没有id或者name,可以先用其他方法定位frame元素,再

driver.swith_to_frame('定位到的元素')

switch_to_default_context()    返回到上一层表单,默认返回到与它最近的switch_to_frame()方法中

 

多窗口切换:

switch_to_window()

eg:先获取当前窗口的句柄,然后再弹出新窗口时,获取所有窗口的句柄列表,循环做个判断,切换到不是旧窗口的句柄中就可以实现

handle = driver.current_window_handle    当前窗口的句柄

handles = driver.window_handles    当前驱动的所有句柄

 

警告框处理:

switch_to_alert()    接收弹出框

text    返回弹出框的文字信息

accept    点击确认按钮

dismiss     点击取消按钮

send_keys    输入值

 

文件上传:

send_keys,通过send_keys传入本地文件路径

Autolt实现上传(目前看没啥用,后续再说)

 

文件下载

 

操作Cookie

get_cookies()    获取所有cookie

get_cookie(name)    获取特定的cookie信息

add_cookie(cookie_dict)    添加cookie,传入一个字典

delete_cookie(name)    删除特定cookie

delete_all_cookies()    删除所有cookie

 

调用JavaScript,执行js语言

js_ = 'var q = document.documentElement.scrollTop=0"

driver.execute_script(js_)

 

窗口截图:

driver.get_screenshot_as_file('D:\\baidu_error,jpg')    后续应该要按时间来截图

 

关闭窗口:

quit()    退出浏览器驱动,关闭所有窗口

close()    关闭当前窗口

 

处理验证码:

让开发 去掉验证码、或者设置一个万能码或者通过cookie绕过验证码

 

打印客户端向服务器发送的请求:

logging.basicConfig(level=logging.DEBUG)

 

OK,Selenium基础就到这里,后续会有项目应用相关内容,即踩到的坑和后续的一些想法~~~

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值