selenium基础实战之定位网页元素

selenium基础实战之定位网页元素

selenium定位网页元素

  1. 元素定位方法
    • find_element_by_id()
    • find_element_by_name()
    • find_element_by_class()
    • find_element_by_class_name()
    • find_element_by_tag_name()
    • find_element_by_link_text()
    • find_element_by_partial_link_text()
    • find_element_by_xpath()
    • find_element_by_css_selector()
  • 注意:find_element_by_xxx 找的是第一个符合条件的标签,find_elements_by_xxx 找的是所有符合条件的标签
  1. 浏览器创建
  • Selenium 支持非常多的浏览器,如Chrome、Firefox、Edge等,还有Android、BlackBerry等手机端的浏览器。另外,也支持无界面浏览器 PhantomJS

from selenium import webdriver

browser = webdriver.Chrome()      # 用的最多是谷歌浏览器
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()
browser = webdriver.Safari()

  1. 打开网页
driver.get('https://www.baidu.com/')

使用python判断是否正确
browser.title 或者 browser.current_url
  1. 定位元素的8种方法
类型 示例
id find_element_by_id() 采用id属性进行定位
name find_element_by_name() 定位方式和id定位类似,id,name和class一般在网页中都至少会有其中的一种
class name find_element_by_class_name() 定位方式和id定位类似,id,name和class一般在网页中都至少会有其中的一种
tag name find_element_by_tag_name() 通过标签名去定位,用的少;例如 find_element_by_tag_name('div')
link text find_element_by_link_text() 通过超链接内容定位,元素内容;例如:<a href="#">xxx </a>,则 find_element_by_link_text('xxx')
partial link text find_element_by_partial_link_text() 超链接内容定位,局部定位,模糊匹配,和link text 类似
css selector find_element_by_css_selector() 根据css选择器定位,一般class是用 . 标记,id用 # 标记,定位方式也会比xpath块。
例如:find_element_by_css_selector('input[id='search']') # 规则:元素[属性=值]
技巧:通过firebug的拷贝css路径
xpath find_element_by_xpath() xpath 是XML路径语言,通过元素的路径来完成对元素的查找,HTML就是XML的一种实现方式,在FriePath插件里copy对应的xpath地址。
xpath语法:"//" 是全部的意思,即全文扫描;"/"相邻的意思;"*" 指所有元素;".." 表示元素的父节点;"." 表示当前节点 ;"@" 选取属性
绝对路径定位:从标签开始依次往下进行查找
相对路径:利用元素属性进行xpath定位
技巧:通过firebug的拷贝css路径
  • 8种选择器注意的问题:如果定位元素报错,原因如下:
    • 根据定位取不到
    • 多个元素根据下标超出范围,没有0,从1开始
    • 解决办法:换其它方式定位元素
  1. 定位元素后的方法
方法 作用
clear() 清空字符串
send_keys() 输入框输入字符串
click() 点击事件,点击按钮,超链接
submit() 提交表单
forward() 页面前进
back() 后退页面(就是浏览器的向左、向右箭头)
maximize_window() 窗口最大化
  1. 定位后元素的属性
属性 作用
tag_name 标签名
text 文本内容
posted @ 2021-05-12 10:27  廿九九  阅读(182)  评论(0)    收藏  举报