美文网首页
selenium css和xpath选择器 以及常用元素方法使用

selenium css和xpath选择器 以及常用元素方法使用

作者: 一如既往而已 | 来源:发表于2019-12-19 14:00 被阅读0次

    一、selenium css 选择器 用法

    选择器 示例 描述
    * * 匹配任何元素
    element DIV 标签选择器,匹配所有使用DIV标签的元素
    .class .tips class选择器,匹配所有class属性中包含info的元素 .a.b则匹配同时包含a和b的元素
    #id #username id选择器,匹配id属性为username的元素
    element,element DIV,SPAN 多元素选择器,选择所有DIV和SPAN全集,使用,分隔
    element element DIV SPAN 后代元选择器,匹配所有的DIV的SPAN后代元素,中间使用空格分隔
    elemen> telement DIV>SPAN 子元素选择器,匹配所有的DIV的SPAN子元素,中间使用> 分隔
    elemen+ telement DIV+SPAN 毗邻元素选择器,匹配紧随DIV后面的同级SPAN元素(only one),不一定就是一个同一个div后面的一个
    elemen~ telement DIV~SPAN 同级元素选择器,匹配所有DIV后面的同级SPAN元素,可以隔着其他元素
    [attribute] [att] 所有包含att属性的元素
    [attribute=vlaue] DIV [att='val'] 匹配所有att属性为val的DIV元素
    [attribute^=vlaue] [attribute|=vlaue] DIV[att^='val'] 匹配所有att属性以val开头的DIV元素 w3s使用的是 |
    [attribute$=vlaue] DIV[att$='val'] 匹配所有att属性以val结尾的DIV元素
    [attribute*=vlaue] [attribute~=vlaue] DIV[att*='val'] 匹配所有att属性包含val的DIV元素
    [attr1=vla1][attr2*=vla2] DIV[att1='v1'][att2*='v2'] 匹配所有att属性为v1,att2属性包含v2的DIV元素
    [attr1=vla1],[attr2*=vla2] DIV[att1='v1'],[att2*='v2'] 同上 或关系
    :link a:link 选择所有未被访问的链接
    :visited a:visited 选择所有已被访问的链接
    :active a:active 选择所有活动链接
    :hover a:hover 选择鼠标指针所在的链接
    :focus input:focus 选择获取焦点的input元素
    :first-child p:first-child 选择所有符合如下规则的p元素,p必须是其父元素的第一个子元素
    :last-child p:last-child 选择所有符合如下规则的p元素,p必须是其父元素的最后一个子元素
    :first-of-type p:first-of-type 选择父元素的首个p子元素的集合,和first-child区别是前面可以有非p元素,不一定是父元素的第一个子元素
    :last-of-type p:last-of-type 选择父元素的首最后一个p子元素的集合,和last-child区别是后面可以有非p元素,不一定是父元素的最后一个子元素
    :only-of-type p:only-of-type 选择父元素的只有唯一个p子元素的集合
    :nth-child(n) p:nth-child(2) 选择属于其父元素的第二个子元素的每个 <p> 元素
    :nth-last-child(n) p:nth-last-child(2) 同上,从最后一个元素来计数
    :nth-of-type(n) p:nth-of-type(2) 选择父元素的第二个p子元素的集合,和:nth-child(n) 区别是前后可以有非p元素,不一定是父元素的第二个子元素
    :nth-last-of-type(n) p:nth-last-of-type(2) 同上,从最后一个元素来计数
    :root :root 选择文档的根元素
    :empty p:empty 选择没有子节点的p元素包含文本节点
    :enabled input:enabled 选择每个启用的input元素
    :disabled input:disabled 选择每个禁用的input元素
    :checked input:checked 选择每个被选中的input元素
    :not(selector) :not(p) 选择所有非p元素
    Selenium 中则是采用 了来自Sizzle 的css3 定位扩展,它的语法更加灵活易懂。
    :nth(n):eq(n) li:nth(2)li:eq(2) 同:nth-child(n),但是从0开始
    :first li:first 同:first-child
    :last li:last 同:last-child
    :even li:even 在其父元素中的li 子元素集合中排在偶数位的集合
    :odd li:odd 在其父元素中的li 子元素集合中排在奇数位的集合
    :lt(n) li:lt(2) 在其父元素中的li 子元素集合中排在第n位之前的所有元素集合(不包含n),n从0开始
    :gt(n) lg:lt(2) 在其父元素中的li 子元素集合中排在第n位之后的所有元素集合(不包含n),n从0开始
    :only-child div:only-child 同:only-of-type
    :empty p:empty 同CSS原生选择器:empty
    :input :input 获取所有input类型的元素(包含input、select、textarea)
    :text, :checkbox, :file, :password, :submit, :image, :reset, :button ... 获取指定类型的元素

    二、selenium xpath 选择器 用法

    表达式 示 例 说 明
    article 选取所有article元素的所有子节点
    /article 选取根元素article
    article/a 选取所有属于article的子元素的a元素
    //div 选取所有div子元素(不论出现在文档任何地方)
    article//div 选取所有属于article元素的后代的div元素,不管它出现在article之下的任何位置
    //@class 选取所有名为class的属性
    /article/div[1] 选取属于article子元素的第一个div元素
    /article/div[last()] 选取属于article子元素的最后一个div元素
    /article/div[last()-1] 选取属于article子元素的倒数第二个div元素
    //div[@lang] 选取所有拥有lang属性的div元素
    //div[@lang='eng'] 选取所有lang属性为eng的div元素
    /div/* 选取属于div元素的所有子节点
    //* 选取所有元素
    //div[@*] 选取所有带(任意)属性的div元素
    /div/a | //div/p 选取所有div元素的a和p元素
    //span | //ul 选取文档中的span和ul元素
    article/div/p | //span 选取所有属于article元素的div元素的p元素以及文档中的所有span元素
    //div[@id='1']/h1/text() 获取id为1的div标签下的h1标签里的内容
    //span[not(@class)] 选择不包含class属性的span节点
    //span[not(@class) and not(@id)] 选择不包含class和id属性的span节点
    //span[not(contains(@class,'expire'))] 选择不包含class="expire"的span
    //span[contains(@class,'expire')] 选择包含class="expire"的span
    //h2[contains(text(),'Activated')] 选择标签内容里包含Activated的h2标签
    //div[not(contains(text(),'activated'))] 选择标签内容中不包含activated的div标签

    说明:XPATH如何选择不包含某一个属性的节点
    我们知道选择包含某一特定属性的节点,可以使用例如//tbody/tr[@class]来选择。那么不含某属性的节点如何用xpath取得呢?
    这里可以用到not,例如排除一个属性的节点可以使用//tbody/tr[not(@class)]来写,排除一个或者两个属性可以使用//tbody/tr[not(@class or @id)]来选择。

    三、常用元素方法

    新建实例driver = webdriver.Firefox()
    此处定位均使用的百度首页输入框

    功 能 说 明 方 法 实 例
    1.通过标签属性Id查找元素 find_element_by_id(element_id) driver.find_element_by_id("kw")
    2.通过标签属性name查找元素 find_element_by_name(element_name) driver.find_element_by_name("wd")
    3.通过标签Xpath路径查找元素 find_element_by_xpath(xpath) driver.find_element_by_xpath("//[[@*id](https://testerhome.com/id "@id")="kw"]")
    4.通过标签名tagname查找元素 find_element_by_tag_name(tag_name) driver.find_element_by_tag_name("input")
    5.通过标签中的元素文本链接查找元素 find_element_by_link_text(link_text) driver.find_element_by_link_text('百度一下')
    6.通过标签的class属性查找元素 find_elements_by_class_name(class_name) driver.find_elements_by_class_name("s_ipt")
    7.通过css样式查找元素 find_element_by_css_selector() driver.find_element_by_css_selector("#kw")
    8.浏览器中加载url get(url) driver.get("http://www.baidu.com")
    9.向前 forward() driver.forward()
    10.返回当前会话中的cookies get_cookies() driver.get_cookies()
    11.根据cookie name 查找 driver.get_cookie(cookie_name) driver.get_cookie("NET_SessionId")
    12.截取当前页面 get_screenshot_as_file(filename) driver.get_screenshot_as_file(r"C:\Users\Eric\Desktop\test.png")
    13.获取当前窗口的坐标 get_window_position() driver.get_window_position()
    14.获取当前窗口的长和宽 get_window_size() driver.get_window_size()
    15.获取当前页面的Url函数 current_url driver.current_url
    16.获取元素坐标(首先查找到你要获取元素的,然后调用location方法) location driver.find_element_by_id("kw").location
    17.表单的提交(查找到表单(from)直接调用submit即可) submit driver.find_element_by_id("su").submit()
    18.获取CSS的属性值 value_of_css_property(css_name) driver.find_element_by_id("su").value_of_css_property("color")
    19.获取元素的属性值 get_attribute(element_name) driver.find_element_by_id("kw").get_attribute("type")
    20.判断元素是否被选中 is_selected() driver.find_element_by_id("form1").is_selected()
    21.返回元素的大小(返回值:{'width': 102, 'height': 38}) size driver.find_element_by_id("kw").size
    22.判断元素是否显示 is_displayed() driver.find_element_by_id("kw").is_displayed()
    23.判断元素是否被使用 is_enabled() driver.find_element_by_id("kw").is_enabled()
    24.获取元素的文本值 text driver.find_element_by_class_name("mnav").text
    25.输入值 send_keys(*values) driver.find_element_by_id("kw").send_keys('admin')
    26.返回元素的tagName tag_name driver.find_element_by_id("kw").tag_name
    27.删除浏览器所以的cookies delete_all_cookies() driver.delete_all_cookies()
    28.删除指定的cookie delete_cookie(name) deriver.delete_cookie("my_cookie_name")
    29.关闭浏览器 close() driver.close()
    30.关闭浏览器并且推出驱动程序 quit() driver.quit()
    31.返回上一页 back() driver.back()
    32.设置等待超时 implicitly_wait(wait_time) driver.implicitly_wait(30)
    33.浏览器窗口最大化 maximize_window() driver.maximize_window()
    34.查看浏览器的名字 name drvier.name
    35.刷新当前浏览器 refresh drvier.refresh()

    相关文章

      网友评论

          本文标题:selenium css和xpath选择器 以及常用元素方法使用

          本文链接:https://www.haomeiwen.com/subject/ejlmnctx.html