selenium三大组成部分
selenium ide :firefox/chrome/edge安装插件 不要30分钟就能学会,是个录制工具。
selenium webdriver:第三方库。结合编程语言才能用。python/java/javascript/c#等。
selenium grid:配置化。分布式的配置。同样的代码在不同的浏览器中运行。同样的代码分成几份在5台机器上运行。。。。
1.浏览器驱动程序下载下来后,放在python安装目录下面
#这里如果驱动程序没有放在python的安装目录下的话,则在python代码中,实例化的时候给出驱动程序的完整地址。driver = webdriver.Chrome(executable_path = 驱动程序的完整路径,包括exe文件)
2.pip install -u selenium (最新版本是selenium4)
调用访问方法 ---get
driver.get("http://www.baidu.com")
调用截图方法
driver.save_screenshot("访问百度.png")
浏览器最大化
driver.maximize_window()
页面刷新
driver.refresh()
返回上一个页面
driver.back()
进入下一个页面
driver.forward()
HTML的构成
html表达结果,标签对。每一个内容就是一个标签对
<标签名 属性名=值>
...........(标签对/文本内容)
</标签名>
标签名:代表元素的类别
属性:公共属性 -- 元素特有的属性
公共属性:
id 类似与身份证号码,唯一标识,有可能会变动
class 给元素分类,可以有多个值,每个值之间用空格隔开,不能唯一识别元素
name 重复性不高,唯一性很强,一般是代表元素业务
style 内嵌样式
元素有3个东西可以用来定位:
标签名,属性,文本内容
了解地址:https://www.runoob.com/html/html-tutorial.html
元素定位
八大定位:
第一类:只用元素的一个特性来进行定位
id id属性
class_name class属性
tag_name 标签名属性
name name属性
link_text 只针对a元素的文本内容匹配 -- 完全匹配
partial_link_text 只针对a元素的文本呢人匹配 -- 模糊匹配
第二类:
xpath:相对定位
css selector:css选择器
selenium4中有9种定位方式
xpath的绝对定位和相对定位
绝对定位 -- 绝对路径
从根目录开始,每一层都涵盖进来了
相对定位 -- 相对路径
相对与参照物,只要参照物里面能够找到就可以,不用管路径关系
定位方式:
1.//标签名[@属性="值"]
2.//标签名[text()="值"]
3.//标签名[contains(@属性,"值")] //标签名[contains(@text(),"值")] 模糊匹配
4.支持逻辑运算:and or
//标签名[@属性="值" and @属性="值" and text()="值" and contains(text(),"值")]
以上4种,全是只利用元素得特性来定位得。当我们以元素本身得特性无法唯一定位这个元素时,就会利用元素在页面上得关系再综合自身特性一起进行定位。
层级定位
1.按照html页面得顺序,从上到下定位
例如:找到某个一直在变动得元素,可以先找到它的父级元素 //div@[@class="stu"]//p 尽量不要使用索引,如果你想取第二个元素,可以根据第二个元素的特征。例如//div@[@class="stu"]//p[text()="课程人数"]//....
2.轴定位
轴定位关系(已知元素,与要找的元素之间的关系)
preceding-sibling:同级的哥哥元素
following-sibling:同级的弟弟元素
parent:父级元素
ancestor:祖先元素(涵盖父级元素)
使用语法://...已知元素/轴定位名称::标签名[]/轴定位名称::标签名[]
只有使用轴定位的时候会用到单斜杠,其他都是双斜杠
//span[text()="y师-A-我參"]/ancestor::td/folloming-sibling::ta//span[text()="熙后"]
元素定位优化方向参为:http://testingpai.com/article/1595507202464
标签:web,复习,第一天,定位,标签,元素,driver,text,属性 From: https://www.cnblogs.com/xuhaotest/p/17982974