• 八大元素定位


    八种元素定位

    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()

  • 相关阅读:
    《笨办法学python》 第14课手记
    《笨办法学Python》 第13课手记
    杭电2009----求数列的和
    杭电2008----数值统计
    杭电2007----平方和与立方和
    杭电2006----求奇数的乘积
    杭电2005----第几天?
    杭电2004---- 成绩转换
    杭电2003----求绝对值
    杭电2002----计算球体积
  • 原文地址:https://www.cnblogs.com/Murraya/p/13116230.html
Copyright © 2020-2023  润新知