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()
  • 相关阅读:
    自实现的DNetStopWatch类
    IL Discovery 系列三 《为什么在遍历List<T>对象时同时删除其中项会抛出异常》
    高效的线程安全队列ConcurrentQueue<T>(上)
    .NET中Object.Equals()方法与Object.ReferenceEquals()方法
    麻省理工学院(MIT)的开放课程(OCW)真的不错,其音像资料
    Eclipse快捷键大全
    MyEclipse快捷键大全
    c#单文件上传下载源代码
    Tomcat 配置集锦
    asp.net(C#)多文件上传(源代码)vs2008
  • 原文地址:https://www.cnblogs.com/huaerye/p/9325159.html
Copyright © 2011-2022 走看看