一,元素定位方式
二,编写脚本的一般流程
1.导入模块
from selenium import webdriver
2.创建浏览器对象
driver=webdriver.Firefox()
3.打开指定页面
url="https://www.baidu.com"
driver.get(url)
4.操作页内元素
5.关闭页面
driver.quit()
这是基本的一个流程,具体还要看题目要求。就套这个格式就行。
三,单元素定位方式 -> find_element_by_xxx( )
1.id属性值定位
前提:目标元素具有id属性
driver.find_element_by_id(目标元素的id属性值)
返回值:定位到的元素对象
2.name定位方法
前提:目标元素具有name属性
driver.find_element_by_name(目标元素的一个name属性值)
返回值:定位到的元素对象
3.class_name定位方法
前提:目标元素具有class属性
driver.find_element_by_class_name(目标元素的一个class属性值)
返回值:定位到的元素对象
注意事项:如果目标元素的class属性值由多值组成,放在find_element_by_class_name( )参数位置上只能是其中一个
例:from time import sleep
from selenium import webdriver
driver=webdriver.Firefox()
url="file:///C:/Users/Administrator/Desktop/注册页面-素材/注册页面-素材/注册A.html"
driver.get(url)
telA_el=driver.find_element_by_class_name("telA") #页面代码中class="telA newcontent",参数位置上只能是其中一个,所以参数写telA
telA_el.send_keys("18311111111")
sleep(3)
4.tag_name定位方式
driver.find_element_by_tag_name(标签名称)
返回值:定位到的一个元素对象
注意:参数只能是合法的标签名称。即使页面中同类标签有若干个,本方法只返回该类标签中的第一个。
5.link_text定位方式(全部查询)
driver.find_element_by_link_text(超链接文本内容)
例:
driver.find_element_by_partial_link_text("访问 新浪 网站")
6.partial_link_text定位方式(模糊查询)
driver.find_element_by_patial_link_text(超链接文本内容)
例:
driver.find_element_by_partial_link_text("访问 ")
driver.find_element_by_partial_link_text("新浪")
driver.find_element_by_partial_link_text("网站")
运行代码:
from time import sleep
from selenium import webdriver
driver=webdriver.Firefox()
url="file:///C:/Users/Administrator/Desktop/注册页面-素材/注册页面-素材/注册A.html"
driver.get(url)
userA_el=driver.find_element_by_link_text("访问 新浪 网站")
userA_el.click()
sleep(3)
7.xpath定位 -> find_element_by_xpath( )
xpath:HTML文件中目标标签的路径信息
两种路径的描述方式:
(1)绝对路径: /html/body/.....
注意事项: /后必须有内容,内容应该为标签名称或星号(表示任意类别的标签)
(2)相对路径:
对标签的限定:限定的内容均放在[ ]中
<1> [@属性名]
利用元素属性: [@属性名=属性值]--> //*[@id="userA"]
属性与逻辑结合: [@属性名1=属性值 and @属性名2=属性值]--> //*[@id="telA" and @class="telA"]
层级与属性结合: //*[@id='p1']/input
<2> [数字]:数字从1开始
定位的是相对于目标标签的父级标签中同类标签的第几个。
例://p[1]/input[1]
<3> [函数]
1)//*[text()="xxx"] :文本内容是xxx的元素
2)//*[starts-with(@attribule,'xxx')] :属性以"xxx"开头的元素
3)//*[contains(@attribute,'Sxxx')] :属性中含有"xxx"的元素
例1: from time import sleep
from selenium import webdriver
driver=webdriver.Firefox()
url="file:///C:/Users/Administrator/Desktop/注册页面-素材/注册页面-素材/注册A.html"
driver.get(url)
driver=driver.find_element_by_xpath("//*[text()='访问 新浪 网站'] ")
driver.click()
例2: from time import sleep
from selenium import webdriver
driver=webdriver.Firefox()
url="file:///C:/Users/Administrator/Desktop/注册页面-素材/注册页面-素材/注册A.html"
driver.get(url)
driver=driver.find_element_by_xpath("//*[starts-with(@id,'f')]")
driver.click()
例3:from time import sleep
from selenium import webdriver
driver=webdriver.Firefox()
url="file:///C:/Users/Administrator/Desktop/注册页面-素材/注册页面-素材/注册A.html"
driver.get(url)
driver=driver.find_element_by_xpath("//*[contains(@id,'wA')] ")
driver.click()