zoukankan      html  css  js  c++  java
  • 3.8种元素定位

    1.8种常用的元素定位方法:

    1.id定位:driver.find_element_by_id(" ")

    2.Name定位:driver.find_element_by_name(" ")

    3.Class定位:driver.find_element_by_class_name(" ")

    4.Tag定位:driver.find_element_by_tag_name(" ")

    5.Link定位:driver.find_element_by_link_text(" ")

    6.Partial_link定位:driver.find_element_by_Partial_link_text(" ")

    7.Xpath定位:driver.find_element_by_xpath(" ")

    8.css定位:driver.find_element_by_css_selector(" ")

    from selenium import webdriver
    import time
    driver = webdriver.Firefox()
    driver.get('https://www.baidu.com/')
    title = driver.title
    print(title)
    
    driver.find_element_by_id("kw").send_keys("python")    #通过id定位搜索框,用send_keys输入文本
    driver.find_element_by_id("su").click()    #点击事件
    time.sleep(3)
    
    driver.find_element_by_link_text(u"百度首页").click()    #通过link属性定位, 加 u 的作用是把中文字符串转换成unicode 编码
    driver.find_element_by_partial_link_text("ao123").click()   #partial_link是一种模糊匹配的方式,对于超长字符串截取其中一部分
    driver.back()
    
    driver.find_element_by_name("wd").send_keys("花儿爷")   #使用name属性定位
    driver.find_element_by_id("su").click()
    driver.back()
    time.sleep(3)
    
    driver.find_element_by_class_name("s_ipt").send_keys("苏宁易购")  #使用class属性定位
    driver.find_element_by_id("su").submit()       #模拟键盘enter键
    driver.back()
    time.sleep(3)
    
    #driver.find_element_by_tag_name("input").send_keys("python")  #通过tag标签定位,运行会报错,不建议使用
    
    
    '''
    #通过css定位方法
    #1.通过元素的id、name、class这些属性定位
    driver.find_element_by_css_selector("#kw").send_keys("python")        #css通过id定位
    driver.find_element_by_css_selector(".s_ipt").send_keys('python')   # .号后面跟的是class属性, class="s_ipt"
    driver.find_element_by_css_selector("[name='wd']").send_keys('python') # css通过name属性定位
    driver.find_element_by_css_selector("[autocomplete='of']").send_keys('python')   #css通过autocomplete属性定位
    driver.find_element_by_css_selector("[type='text']").send_keys('python')   #css通过type属性定位
    
    #2.css层级
    driver.find_element_by_css_selector("form#form>span>input").send_keys('python')
    driver.find_element_by_css_selector("form.fm>span>input").send_keys('python')
    
    3.css索引定位
    driver.find_element_by_css_selector("select#nr>option:nth-child(1)").click()
    '''
    
    #driver.find_elements_by_xpath(".//*[@id='kw']").send_keys("python")   #通过路径定位
    '''
    #1.使用绝对路径xpath定位
    dr.find_element_by_xpath("/html/body/div[3]/div[1]/div/div[1]/div/form/span[1]/input").send_keys('0')
    
    # 2.使用相对路径的xpath定位
    通过元素的id、name、class这些属性定位
    driver.find_element_by_xpath("//*[@id='kw']").send_keys("python")
    driver.find_element_by_xpath("//*[@name='wd']").send_keys("python")
    driver.find_element_by_xpath("//*[@class='s_ipt']").send_keys("python")
    
    #3.xpath层级,元素属性不明显时可以定位父元素
    driver.find_element_by_xpath("//span[@id='s_kw_wrap']/input").send_keys("python")   #通过定位父元素来定位
    driver.find_element_by_xpath("//form[@id='form]/span/input").send_keys("python")   #通过定位爷爷元素来定位
    
    #4.xpath索引定位,元素兄弟一样,无法通过层级定位,指定索引
    driver.find_element_by_xpath("//select[@id='nr']/option[1]").click  #索引值通过1算起的
    driver.find_element_by_xpath("//select[@id='nr']/option[2]").click
    
     '''
    
    driver.quit()

    后几种复数形式定位方法,定位到的是一组元素返回的是一个队列:

    1. id定位:driver.find_elements_by_id(" ")
    2. Name定位:driver.find_elements_by_name(" ")
    3. Class定位:driver.find_elements_by_class_name(" ")
    4. Tag定位:driver.find_elements_by_tag_name(" ")
    5. Link定位:driver.find_elements_by_link_text(" ")
    6. Partial_link定位:driver.find_elements_by_Partial_link_text(" ")
    7. Xpath定位:driver.find_elements_by_xpath(" ")
    8. css定位:driver.find_elements_by_css_selector(" ")
    '''定位一组元素'''
    from selenium import webdriver
    driver=webdriver.Firefox()
    driver.get("http://www.baidu.com")
    
    s=driver.find_elements("css selector",".mnav")[3].click()
  • 相关阅读:
    centos7 实时查看tomcat错误信息
    soapUI测试webservice(参数为xml格式的处理方式)
    四个好看的CSS样式表格
    ORM篇——有关NHibernate查询封装
    ORM篇——使用NHibernate配置对象实体的一些小问题
    c#操作XML文件的通用方法
    C#中正则表达式的使用
    C# Dictionary用法总结
    DLinq查询
    DataGrid通过DataSet保存为xml文件,并导入
  • 原文地址:https://www.cnblogs.com/huaerye/p/9325159.html
Copyright © 2011-2022 走看看