selenium

定位方法:

前八种是使用频率较高的

1.id 定位:find_element_by_id(self, id_)

2.name 定位:find_element_by_name(self, name)

3.class 定位:find_element_by_class_name(self, name)

4.tag 定位:find_element_by_tag_name(self, name)

5.link 定位:find_element_by_link_text(self, link_text)

6.partial_link 定位 find_element_by_partial_link_text(self, link_text)

7.xpath 定位:find_element_by_xpath(self, xpath)

8.css 定位:find_element_by_css_selector(self, css_selector)

9.id 复数定位 find_elements_by_id(self, id_)

10.name 复数定位 find_elements_by_name(self, name)

11.class 复数定位 find_elements_by_class_name(self, name)

12.tag 复数定位 find_elements_by_tag_name(self, name)

13.link 复数定位 find_elements_by_link_text(self, text)

14.partial_link 复数定位 find_elements_by_partial_link_text(self, link_text)

15.xpath 复数定位 find_elements_by_xpath(self, xpath)

16.css 复数定位 find_elements_by_css_selector(self, css_selector)

参数化的方法

17.find_element(self, by='id', value=None)

18.find_elements(self, by='id', value=None)

xpath 定位

xpath:属性定位 1.xptah 也可以通过元素的 id、name、class 这些属性定位

xpath:其它属性 如果一个元素 id、name、class 属性都没有,这时候也可以通过其它属性定位到

 xpath:标签 1.有时候同一个属性,同名的比较多,这时候可以通过标签筛选下,定位更准一 点

2.如果不想制定标签名称,可以用*号表示任意标签

3.如果想制定具体某个标签,就可以直接写标签名称

 4.xpath:层级

5.xpath:索引

6 xpath:逻辑运算

1.xpath 还有一个比较强的功能,是可以多个属性逻辑运算的,可以支持与(and)、 或(or)、非(not)

2.一般用的比较多的是 and 运算,同时满足两个属性

 7 xpath:模糊匹配

1.xpath 还有一个非常强大的功能,模糊匹配

2.掌握了模糊匹配功能,基本上没有到位不到的

3.比如我要定位百度页面的超链接“hao123”,在上一篇中讲过可以通过 by_link,也可以通过 by_partial_link,模糊匹配定位到。当然 xpath 也可以有 同样的功能,并且更为强大

 CSS 定位语法

1 css:属性定位

1.css 可以通过元素的 id、class、标签这三个常规属性直接定位到

2.css 用#号表示 id 属性,如:#kw

3.css 用.表示 class 属性,如:.s_ipt

4.css 直接用标签名称,无任何标示符,如:input

css:其它属性

1.css 除了可以通过标签、class、id 这三个常规属性定位外,也可以通过其它 属性定位

 css:标签

1.css 页可以通过标签与属性的组合来定位元素

 css:层级关系

css:索引

css 也可以通过索引 option:nth-child(1)来定位子元素,这点与 xpath 写法 用很大差异,其实很好理解,直接翻译过来就是第几个小孩

6 css:逻辑运算

1.css 同样也可以实现逻辑运算,同时匹配两个属性,这里跟 xpath 不一样,无 需写 and 关键字

selenium操作cookies实现免密登录

以博客园为例

 获取到cookie后

 

 注:不知道登录的有效cookie是哪个,可以登录前打印一个cookie,登录后再打印一遍cookie,即可知道如果实现登录需要的cookie值是哪个

定位输入框联想词

一:首先在百度输入框输入例如博客,下面会出现许多联想词,选中其中一个,鼠标右键点击检查,可以看到下方匹配出来的词都有共同的class属性,这时候可以使用find_elements_...全部定位了,.通过get_attribute()方法就可以获取到文本信息了。

参考链接:https://www.cnblogs.com/canglongdao/p/13594459.html

Selenium 三种等待方式详解

一:强制等待

利用time模块的sleep方法来实现,最简单粗暴的等待方法

这种叫强制等待,不管你浏览器是否加载完成,都得给我等待3秒,3秒一到,继续执行下面的代码,不建议用这种等待方法,严重影响代码的执行速度

二:隐式等待

设置一个等待时间,如果在这个等待时间内,网页加载完成,则执行下一步;否则一直等待时间截止,然后再执行下一步。这样也就会有个弊端,程序会一直等待整个页面加载完成,直到超时,但有时候我需要的那个元素早就加载完成了,只是页面上有个别其他元素加载特别慢,我仍要等待页面全部加载完成才能执行下一步。

# 隐式等待30秒
driver.implicitly_wait(30)

三:显示等待
元素一加载出来就执行下一步(显示等待两种方式)
一是等待元素出现

 二是等待元素消失until_not()

原文地址:https://www.cnblogs.com/ydbk/p/15020725.html