【Selenium课程】

1、delenium定义:
用程序控制自动化浏览器的一个工具

2、selenium2与selenium3差别:
前者selenium公司自己写的webDriver模块
后者浏览器公司自己出的webDriver模块

3、selenium Grid:
可以在多台机器上同时执行Selenium自动测试

4、selenium IDE使用时机:
(1)利用它来生成自动化脚本的大体流程;
(2)利用Selenium IDE里面的按钮帮助定位元素;

5、查找元素一般分两种:
webDriver—全html中查找
webElement-范围中查找

6、html
html DOM(页面渲染引擎或叫浏览器内核)
DOM是W3C制定的标准,由一个个的node(节点)组成<a>称作一个element(元素)
CSS
W3C的CSS是定义html页面样式的语言,决定元素显示的效果
xpath
在xml文档中选择node(节点)

7、通过属性查找:

id(唯一标识)-
driver.find_element_by_id('值')
name-
driver.find_element_by_name('值')【返第一个namewebelement对象】
driver.find_elements_by_name('值')【返所有符合对象list】
class-
driver.find_element_by_class_name('值')【返第一个namewebelement对象】
driver.find_elements_by_class_name('值')【返所有符合对象list】
tag-
driver.find_element_by_tag_name(‘元素头')【返第一个namewebelement对象】
driver.find_elements_by_tag_name('元素头')【返所有符合对象list】
链接文本-
driver.find_element_by_link_text(u"值")【匹配查找】
driver.find_elements_by_partial_link_text(u"值")【关键字查找】

8、通过css查找:

driver.find_element_by_css_selector("css elector")
["css elector"="#id值 元素排头.class值"]

(1)根据tag名字

p{color:red;}

(2)根据id,id=‘food’元素

#food{color:red;}

(3)根据class,class=‘vegetable’

.vegetable{color:red;}

(4)根据tag名和class组合写(如果多个)

span.vegetable{color:red;}

span.vegetable-查找span中,class=‘vegetable’的元素

span .vegetable-查找span下,其他tag名中class=‘vegetable’的元素

(5)后代元素与子元素

li em-tag包li下的tag包名em(隔很多代用空格)

li>em-tag包li下一级的tag报名em(隔一代用>)

查找-不好找的CSS elector,打开F12选中元素,鼠标右键copy=>copy seletor
测试-F12切换console界面,输入$$("css elector")

(6)组(group)选择

[1]组选择同时选择多个元素,逗号隔开

语法<s1>,<s2>(lg:#food,.cheese)

[2]组合使用

选择id为food的所有span子元素和所有的p(包含非food的子元素)

#food >span,p

选择id为food的所有span子元素和所有的p子元素

#food >span,#food>p

选择id为food的所有子元素

#food >*

(7)兄弟元素选择

选择紧接在另一个元素后的元素,二者有相同的父元素

#food + div(获取后面的兄弟元素)

#food > div >p.special + p

选择在另一个元素后的元素,二者有相同的父元素

#food ~ div

(8)属性选择

可以根据元素的属性及属性值来选择元素

*[style]

p[spec=len2]

p[spec='len2 len3']

p[spec*='len2']#包含

p[spec^='len2']#开头结尾

p[spec$='len2']#查部分属性中的内容

p[class=special][name=p1]#同时满足多个属性值

(9)伪类

#food>p:nth-child(n)[注意n为tag包food名下第几个元素]

#food>p:nth-of-type(n)[注意n为tag包food名下第几个p元件元素]

(10)

9、通过Xpath查找:

Xpath(XML Path Language)

(1)和css一样,xpath也有通配符*

//div/* 选择div下面所有的元素

等价与css $$('div > *')

(2)根据属性选择

//*[@style] 选择所有元素类型下的属性

//p[@style]选择p元素类型下的属性

(3)子元素选择器

//div[@style]/p[2]选择老王的第二个女儿娶

选择属于其父元素的第N个某个类型的子元素

//*[@style]/p[1]等价于#food >p:nth-of-style(1)

选择属于其父元素的倒数第N个某个类型的子

//span[last()-1]  属于其父元素的倒数第二个span【注释:下标是从1开始的】

//*[@id="food"]/span[last()]

//*[last()-1]??

(4)现在只能选择前几个或后几个,不能选区域

//select/*[position()=2]现在第二个元素

//select/*[position()>=2]第二个及其后面的元素

//select/*[position()=last()]最后一个元素

(5)循环选择元素

(6)组选择

 

()

[一般用于查找拥有id元素上一级元素的内容]
ele = driver.find_element_by_xpath("//span[@id='beff']/..")
print(ele.text.split('#')[1])

 

10、通过Javascript查找:

kw = driver.execute_script("return $('kw')[0]")
kw.send_keys(u'松勤\n')

11、web元素操作:

(1)innerText-DOM节点的属性
element = driver.find_element_by_id("div1")
print()element.text)
(2)编辑框输入字符
ele.send_keys(u'值')
(3)等待web元素的出现
方法1、
import time
time.wait(1)
方法2、显式
方法3、隐式
[参考书本146页]
(4)单选框
(5)勾选框
(6)复选框
[参看书本147~150页]
(7)点击按钮、链接
driver.find_element_by_id("submit").click()
(7)获取当前窗口title
driver.title
(8)获取当前窗口的地址栏url地址
driver.current_url
(9)关闭当前窗口
driver.close()
driver.quit()-关闭web浏览器和webdriver
(10)截屏
driver.get_screenshot_as_file("ssl.png")

 (11)获取tag对应的属性值

job.get_attribute('class')[job为对应的namewebelement对象]

1、在frame、iframe里面操作:
driver.swithch_to.frame('baidu')【进】(id与name或索引数值0等)
driver.swithch_to.default_conteent()【出】
2、在window之间切换:
[参看书本153~154页]

3、等待元素出现:

隐式等待-

driver.implicitly_wait(10)【注:全局调用,找不到每隔0.5s会再次找一次】

driver.implicitly_wait(60)
ele1 = driver.find_element_by_id('1')
driver.implicitly_wait(10)

现式等待-

 

转载于:https://www.cnblogs.com/wanguku/p/10529698.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值