zoukankan      html  css  js  c++  java
  • 八大元素定位

    八种元素定位

    1. id,基于元素属性中id的值来进行定位

    2. name

    3. link text

    4. partial link text

    5. classname

    6. tagname

    7. cssselector

    8. xpath 

    常用的为id、name、xpath

    from selenium import webdriver
    from time import sleep

    # 创建浏览器对象
    driver = webdriver.Chrome()
    # driver.get('http://39.98.138.157/shopxo/index.php?s=/index/user/logininfo.html')
    driver.get('http://www.baidu.com')
    # driver.maximize_window()
    '''
    八大元素定位法则:
    1. id,基于元素属性中id的值来进行定位
    id类似于人们身份证上的身份证号码,不出意外都不会重复
    2. name:基于元素属性中name的值来进行定位
    类似于人们身份证上的身份证名字,很可能会出现重名
    3. link text:主要用于超链接进行定位
    4. partial link text:link text的模糊查询版本,类似于数据库中like %
    当模糊查询匹配到多个符合条件的元素,选取第一个
    5. classname:基于元素样式来进行定位,非常容易遇到重复的
    6. tagname:标签名来进行定位,重复度最高。只有在需要定位后进行二次筛选的情况下使用
    7. cssselector:应用相对较多的一种行为,最初IE浏览器不支持xpath,完全基于class属性来实现的定位
    8. xpath :目前应用最多的一种行为,基于页面结构来进行的定位
    绝对路径:从html根路径下一层一层往下数,找到对应的层级,从而找到元素,除非十万火急,不要这么写
    相对路径:基于匹配制度来查找元素,依照xpath语法结构来走
    例如://*[@id="kw"]
    //表示从根路径下开始查找
    * 任意元素
    [] 表示筛选条件(查找函数)
    @ 表示基于属性来筛选,例如@id="kw"表示基于id属性值为kw的条件来进行筛选
    确认xpath路径是否正确:
    1. 在开发者工具elements页面使用ctrl+f查找,进行判断
    2. 在console中输入$x()进行校验
    如果要基于text来定位元素
    在[]中添加text()="文本内容"进行查找,例如://a[text()='登录']

    当你定位元素,无法直接定位时,可以通过定位子级元素返回父级来获取元素;/..
    //input[@id="kw"]
    //input[contains(@id,'kw')]
    contains表示进一步查找,匹配项模糊查找
    //input[contains(text(),'搜搜搜索')]
    '''
    # 基于ID定位
    # driver.find_element_by_id('id')
    # 基于name定位
    # driver.find_element_by_name('name')
    # 基于link text定位
    # driver.find_element_by_link_text('注册').click()
    # 基于partial link text定位,获取多元素时的操作
    # dr = driver.find_elements_by_partial_link_text('百度')
    # for d in dr:
    # print(d.text)
    # class属性定位
    # driver.find_element_by_class_name('am-radius').click()
    # tagName定位
    # dr = driver.find_elements_by_tag_name('a')
    # for d in dr:
    # if d.text == '登录':
    # d.click()
    # cssSelector定位
    # body > div.am-g.my-content > div > div.am-u-sm-12.am-u-md-6.am-u-lg-4.container-right > div.user-form-container > form > div:nth-child(1) > input
    # driver.find_element_by_css_selector(
    # 'body > div.am-g.my-content > div > div.am-u-sm-12.am-u-md-6.am-u-lg-4.container-right > div.user-form-container > form > div:nth-child(1) > input')
    # xpath元素定位
    # /html/body/div[4]/div/div[2]/div[2]/form/div[1]/input
    # //*[@id="kw"]
    # driver.find_element_by_xpath('//input[@name="accounts"]')
    sleep(2)
    driver.find_element_by_xpath('//*[@id="s-hotsearch-wrapper"]/div/a[1]/div').click()

  • 相关阅读:
    Log4Net 自定义级别,分别记录到不同的文件中
    带着忧伤,寻觅快乐
    程序员进阶学习书籍
    PHP编码技巧
    PHP精度问题
    Laravel5 构造器高级查询条件写法
    正则表达式 /i /g /m /ig /gi
    MySQL运算符的优先级
    PHP获取当前页面完整路径URL
    使用ssl模块配置同时支持http和https并存
  • 原文地址:https://www.cnblogs.com/Murraya/p/13116230.html
Copyright © 2011-2022 走看看