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‘] ???
???
web常用操作和定位方法
原文地址:https://www.cnblogs.com/quiet-sun/p/9751913.html