• Selenium3+python3自动化(三十二)--4类32种定位方法(find_element_by_xx, find_elements_by_xx, find_element)


    前言

    slenium自动化,最重要的四步:定位元素、操作元素、获取返回值、断言,可见定位方法的重要性。

    一、三十二种定位方法

    下面八种是大家熟悉的,经常会用到的

    1.id定位:find_element_by_id(id)

    2.name定位:find_element_by_name(name)

    3.class定位:find_element_by_class_name(name)

    4.tag定位:find_element_by_tag_name(name)

    5.link定位:find_element_by_link_text(link_text)

    6.partial_link定位:find_element_by_partial_link_text(link_text)

    7.xpath定位:find_element_by_xpath(xpath)

    8.css定位:find_element_by_css_selector(css_selector)

    下面八种是复数形式

    1.id复数定位:find_elements_by_id(id)

    2.name复数定位:find_elements_by_name(name)

    3.class复数定位:find_elements_by_class_name(name)

    4.tag定位:find_elements_by_tag_name(name)

    5.link定位:find_elements_by_link_text(link_text)

    6.partial_link定位:find_elements_by_partial_link_text(link_text)

    7.xpath定位:find_elements_by_xpath(xpath)

    8.css定位:find_elements_by_css_selector(css_selector)

    下面2类不太常用,同样每类也有八种

    find_element(by='id',value=None)

    find_elements(by='id',value=None)

    二、element和elements的区别

    1.element方法定位到的是单数,是直接定位到元素,可直接操作

    2.elements方法是复数,定位到的是一组元素,返回的是list队列

    3.可以用type()函数查看数据类型

    4.打印这个返回的内容,看看有什么不一样

    # coding:utf-8
    from selenium import webdriver
    # from selenium.webdriver.common.by import By
    import time
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com")
    a=driver.find_element_by_id("kw")
    a.send_keys("a")
    time.sleep(2)
    
    bb=driver.find_elements_by_id("kw")
    bb[0].send_keys("_bb")
    time.sleep(2)
    
    c=driver.find_element("id","kw")
    c.send_keys("_c")
    time.sleep(2)
    
    dd=driver.find_elements("id","kw")
    dd[0].send_keys("_dd")
    
    print("a的类型:{},值:{}".format(type(a),a))
    print("bb的类型:{},值:{}".format(type(bb),bb))
    print("c的类型:{},值:{}".format(type(c),c))
    print("dd的类型:{},值:{}".format(type(dd),dd))
    

     运行结果:

    a的类型:<class 'selenium.webdriver.remote.webelement.WebElement'>,值:<selenium.webdriver.remote.webelement.WebElement (session="864b09ef2caa45ac7fdf25ac01bfc3cb", element="d2671363-8edd-4ed8-9072-ffd38bee4ae6")>
    bb的类型:<class 'list'>,值:[<selenium.webdriver.remote.webelement.WebElement (session="864b09ef2caa45ac7fdf25ac01bfc3cb", element="d2671363-8edd-4ed8-9072-ffd38bee4ae6")>]
    c的类型:<class 'selenium.webdriver.remote.webelement.WebElement'>,值:<selenium.webdriver.remote.webelement.WebElement (session="864b09ef2caa45ac7fdf25ac01bfc3cb", element="d2671363-8edd-4ed8-9072-ffd38bee4ae6")>
    dd的类型:<class 'list'>,值:[<selenium.webdriver.remote.webelement.WebElement (session="864b09ef2caa45ac7fdf25ac01bfc3cb", element="d2671363-8edd-4ed8-9072-ffd38bee4ae6")>]
    

     三、elements定位方法

    1.这里重点介绍下用elements方法如何定位元素,当一个页面上有很多个属性相同的元素,然后父元素的属性也比较模糊,不太好定位。

    这个时候不用怕,换个思维,别老想着一次定位到,可以先把相同属性的元素找出来,取对应的第几个就可以了。

    2.如下图,百度页面上有六个class一样的元素,我要定位“地图”这个元素

     3.取对应下标即可定位了

    # coding:utf-8
    from selenium import webdriver
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com")
    l=driver.find_elements_by_xpath("//div[@id='head']/div[3]/a")
    #地图在第3个位置
    print(l[2].text)
    l[2].click()  

     运行结果:

    地图
    

     

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    Windows下升级Zabbix Agent
    mariadb+haproxy实现负载均衡(一)
    mariadb数据库galera下添加新的服务器节点
    1044/1045
    mariadb 离线安装
    CentSO7.6下部署Maridb Galera Cluster 实践记录(一)
    Word 远程调用失败:异常来自 HRESULT:0x800706BE
    CentSO7.6下部署Maridb Galera Cluster 实践记录(二)
    数据结构之双向链表-c语言实现
    数据结构之单链表-c语言实现
  • 原文地址:https://www.cnblogs.com/canglongdao/p/13604825.html
Copyright © 2020-2023  润新知