web常用操作和定位方法

1. 浏览器的常用操作:
1> 访问某个页面:页面:driver.get('ht('t('http://www.baidu.com')
2> 最大化窗口:窗口:driver.maximize_win_window()
3> 返回上一个页面:页面:driver.back()
4> 前进到下一个页面:页面:driver.forward()
5> 涮新页面:页面:driver.refresh()
6> 获取页面的url:rl:driver.current_url_url
7> 获取页面的标题:标题:driver.title
8> 获取句柄:句柄:driver.current_win_window_handle,唯一标识一次会话窗口的ID
9> 关闭当面页面:driver.close()
10> 退出整个会话:driver.quit()
**注意:一个会话可能包括几个页面,退出整个会话,即整个浏览器的退出**
11>设置长和高的窗口:窗口:driver.set_win_window_size('800','600')
```python
import time
from selenium import webdriver

#开启了一个与浏览器之间的会话
driver = = webdriver.Chrome()

#最大化窗口
#driver.maximize_win_window()
#设置长和高的窗口
driver.set_win_window_size('800','600')

#访问百度
driver.get('ht('t('http://www.baidu.com')
#访问谷歌
driver.get('ht('t('https://www.google.com')

#返回上一个页面
time.sleep(2)
driver.back()

#前进到下一个页面
time.sleep(2)
driver.forward()

#涮新当前页面
time.sleep(2)
driver.refresh()

#获取当前页面的url
print(nt(driver.current_url_url)

#获取当前页面的标题
print(nt(driver.title)

#获取当前页面的句柄
print(nt(driver.current_win_window_handle)

#关闭窗口
time.sleep(2)
driver.quit()

```
2. web页面包含元素(标签),属性,事件(元素的操作),有属性和操作即可以构成一个类,这个类为WebElement类,代表一个DOM元素
3. <span class="bg s_ipt_wr quickdelete-wrap"></span>:表示span元素有3个class值(各值是以一个空格隔开),定位时只能取一个值
3. web元素的8种元素定位方式,返回的都是一个WebElement类的对象,即元素对象(元素实例)
1> id:绝对唯一,如一,如driver.find_ele_element_by_id('kw')
**动态id不能通过id定位,只在静态id才能通过id定位**
2> 元素name属性:并不绝对不唯一
a> driver.find_ele_element_by_name('wd') :若有多个元素的name属性值为wd,那么直接获取第一个
b> driver.find_ele_elements_by_name('wd') :返回列表,获取所有元素的name属性值为wd的元素
3> 元素的class属性,若元素的class值有多个(各值是以一个空格隔开),定位时只能取一个值,则否会报错Message: invalid selector: Compound class names not permitted
a> driver.find_ele_element_by_class_name('s_ipt_wr'):若有多个元素的class属性值为s_ipt_wr,那么直接获取第一个
b> driver.find_ele_elements_by_class_name('s_ipt_wr'):返回列表,获取所有元素的class属性值为s_ipt_wr的元素
**若元素的class值有多个(各值是以一个空格隔开),通过by_class_name定位时只能取一个值,则否会报错**
4> 元素的标签名,并不绝对唯一
a> driver.find_ele_element_by_tag_name('input')
b> driver.find_ele_elements_by_tag_name('input')
**3>和4>方法使用不多,如在需要获取某一类数据时可以使用**
5> ,6> 针对a元素,通过链接的文本内容来定位元素,有完全匹配和部分匹配
a> driver.find_ele_element_by_link_text('新闻'):完全匹配链接的文本内容
b> driver.find_ele_element_by_partial_link_text('新'):部分匹配链接的文本内容
```python
import time
from selenium import webdriver

#开启了一个与浏览器之间的会话
driver = = webdriver.Chrome()

#最大化窗口
driver.maximize_win_window()

#访问百度
driver.get('ht('t('http://www.baidu.com')

#1. id,绝对唯一
# ele_id = = driver.find_ele_element_by_id('kw') #返回的是一个WebElement类的对象,即元素对象
# print(ele_id) #元素对象
# print(ele_le_id.get_att_attribute('class')) #获取元素class属性的值
# print(ele_le_id.tag_nam_name) #获取元素的标签名

#2.元素name属性,并不绝对唯一
# ele_name = = driver.find_ele_element_by_name('wd') #若有多个元素name值为wd,那么直接获取第一个
# eles_name = = driver.find_ele_elements_by_name('wd') #返回列表:获取所有name值为wd的元素
# print(ele_name)
# print(eles_name)

#3.元素的class属性,并不绝对唯一,若元素的class值有多个(各值是以一个空格隔开),定位时只能取一个值,则否会报错Message: invalid selector: Compound class names not permitted
# ele_class = = driver.find_ele_element_by_class_name('s_ipt_wr')
# eles_class = = driver.find_ele_elements_by_class_name('s_ipt_wr')
# print(ele_class)
# print(eles_class)

#4.元素的标签名,并不绝对唯一
# ele_tag = = driver.find_ele_element_by_tag_name('input')
# eles_tag = = driver.find_ele_elements_by_tag_name('input')
# print(ele_tag)
# print(eles_tag)

#5. 6. 针对a元素,通过链接的文本内容来定位元素,有完全匹配和部分匹配
# ele_link = = driver.find_ele_element_by_link_text('新闻')
# ele_part_link = = driver.find_ele_element_by_partial_link_text('新')
# print(ele_link)
# print(ele_part_link)
```
7> xpath(重点掌握)
a> 绝对定位:以/开头,前后元素为父子关系,缺点太依赖元素之间的层级关系,一点变动就会导致定位不到
b> 相对定位:以//开头,在页面当中,有没有这个元素,无关元素的位置和第几代,语法//[@属性名=属性值],如//input[@id='kw']
posted @ 2018-10-07 22:45  宁静~朝夕  阅读(1899)  评论(0编辑  收藏  举报