• selenium元素定位


    1.driver.find_element_by_id("id_vaule")

    2.driver.find_element_by_name("name_vaule")  :通过name定位元素:因为name属性可能存在重名的情况,如果重名的话会优先定位该name值第一次出现的元素,可能就不是我们的目标元素

    3.driver.find_element_by_class_name("class_name") :通过class_name定位元素:不建议使用,原因html源码中,类样式会同时在多个元素上面使用

    4.driver.find_element_by_tag_name("tag_name_vaule")

    5.driver.find_element_by_link_text("text_vaule") :需传全部文本内容

      driver.find_element_by_partial_link_text("text_vaule"):可以传入部分文本内容

    通过link定位:通过链接定位,仅限于a标签

    6.xpath定位方法

    6.1 绝对路径定位
    driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[3]/a[3]').click()
    6.2 相对路径定位  建议使用

    driver.find_element_by_xpath("//form/span/input").send_keys("金田一少年事件簿")

    6.3 使用元素属性来定位

    # and 和 or完成通过多个属性值定位
    # driver.find_element_by_xpath('//*/div[3]/a[3]').click() #或者//*[@id="s-top-left"]/a[3]
    # driver.find_element_by_xpath("//input[@id='kw' and @class='s_ipt']").send_keys('哈哈')
    # driver.find_element_by_xpath("//input[@id='kw' or @class='s_ipt']").send_keys('哈哈')
    # 可以使用 * 来代替我们不知道的内容
    driver.find_element_by_xpath("//*[@id='kw']").send_keys("金田一少年事件簿")

    6.4 通过部分属性值定位

    # starts-with(@属性名, '匹配开头') 方法
    driver.find_element_by_xpath("//*[starts-with(@name, 'tj_trm')]").click()
    # substring(@属性名, 开始位置, 截取长度)
    driver.find_element_by_xpath("//*[substring(@name, 7)='ideo']").click() #9:指的是从第9个字符开始到最后(包括第9位)
    # contains()
    driver.find_element_by_xpath("//*[contains(@name, 'tie')]").click()
    6.5 使用文本定位       //*[text()='文本值']
    driver.find_element_by_xpath("//a[text()='新闻']").click()
    driver.find_element_by_xpath("//a[contains(text(),'hao')]").click() #根据文本内容模糊查找

    7.css定位方法

    #7.1:绝对路径
    driver.find_element_by_xpath('html body div[1] div[1] div[3] a[3]').click()
    #7.2 相对路径定位
    # driver.find_element_by_css_selector('#kw').send_keys('哈哈')
    # driver.find_element_by_css_selector('span input.s_ipt').send_keys('哈哈')

    #7.3 使用元素属性定位
    # driver.find_element_by_css_selector("input[class='s_ipt']").send_keys('哈哈')
    # driver.find_element_by_css_selector("input[class='s_ipt'][maxlength='255']").send_keys('哈哈')

    #7.4 使用部分属性值来匹配
    # driver.find_element_by_css_selector("input[class^='s_i']").send_keys('哈哈') # 属性值以什么开头
    # driver.find_element_by_css_selector("input[class$='_ipt']").send_keys('哈哈') #属性值以什么结尾
    # driver.find_element_by_css_selector("input[class*='_ipt']").send_keys('哈哈') #属性值包含

    #7.5 出查询子元素
    # driver.find_element_by_css_selector("div#s-top-left a:first-child").click() 子元素第一个
    # print(driver.find_element_by_css_selector("div#s-top-left a:last-child").click()子元素第二个
    # driver.find_element_by_css_selector("div#s-top-left a:nth-child(3)").click() 第n个子元素

    #7.6 查询兄弟元素
    driver.find_element(By.CSS_SELECTOR,'div#s-top-left a+a').click()
    elements = driver.find_elements(By.CSS_SELECTOR,'div#s-top-left a~a')
    for ele in elements:
    print(ele.text)
     

     

      

     

      

  • 相关阅读:
    为什么我们不要 .NET 程序员
    Jquery异步请求数据实例代码
    关系数据库中表的基本属性有哪些
    利用VC从DLL传递消息到EXE
    新实体与原实体之间为一对多关系
    本人C++ Builder开发的仿Windows桌面应用程序源码
    delphi窗体动态设计 在系统运行时动态更改控件属性
    DB.ASP 用Javascript写ASP很灵活很好用很easy
    CrazyScan Satellite scan software 卫星扫描
    delphi中窗体半透明效果如何实现
  • 原文地址:https://www.cnblogs.com/joy-field/p/12876120.html
Copyright © 2020-2023  润新知