zoukankan      html  css  js  c++  java
  • Python+Selenium自动化-定位页面元素的八种方法

    Python+Selenium自动化-定位页面元素的八种方法

     

    本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子。

    0.元素定位方法主要有:

    • id定位:find_element_by_id(' ')
    • name定位:find_element_by_name(' ')
    • class定位:find_element_by_class_name(' ')
    • tag定位:find_element_by_tag_name(' ')
    • link定位:find_element_by_link_text(' ')
    • partial link定位:find_element_by_partial_link_text(' ')
    • xpath定位:find_element_by_xpath(' ')
    • CSS定位:find_element_by_css_selector(' ')
    • By定位

    1.利用ID定位元素

    from selenium import webdriver
    # 设置浏览器
    browser = webdriver.Chrome()
    #设置浏览器大小:全屏
    browser.maximize_window()
    #打开百度首页
    browser.get('https://www.baidu.com/')
    #定位百度搜索输入框之前,先分析下它的html结构
    #<input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off">
    #发现它的 id="kw" ,接下来我们就通过id进行定位
    try:
        browser.find_element_by_id('kw').send_keys('哈哈')
        print('test post:id')
    except Exception as e:
        print('test fail')
    
    #输出内容:test post:id

    2.利用name定位元素

    from selenium import webdriver
    browser = webdriver.Chrome()
    browser.maximize_window()
    
    #打开百度首页
    browser.get('https://www.baidu.com/')
    #搜索框的html结构:<input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off">
    # 根据name属性定位
    try:
        browser.find_element_by_name('wd').send_keys('哈哈')
        print('test post:name')
    except Exception as e:
        print('test fail')
    
    #输出内容:test post:name

    3.利用class定位元素

    from selenium import webdriver
    browser = webdriver.Chrome()
    browser.maximize_window()
    
    #打开百度首页
    browser.get('https://www.baidu.com/')
    #搜索框的html结构:<input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off">
    # 根据class_name属性定位
    try:
        browser.find_element_by_class_name('s_ipt').send_keys('哈哈')
        print('test post:class_name')
    except Exception as e:
        print('test fail')
    
    #输出内容:test post:class_name

    4.利用tag_name定位元素

    from selenium import webdriver
    browser = webdriver.Chrome()
    browser.maximize_window()
    
    #打开百度首页
    browser.get('https://www.baidu.com/')
    #搜索框的html结构:<input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off">
    # 根据tag_name属性定位
    try:
        browser.find_element_by_tag_name('form')
        print('test post:tag_name')
    except Exception as e:
        print('test fail')
    
    #输出内容:test post:tag_name
    • link_text:根据跳转链接上面的文字来定位元素。
    from selenium import webdriver
    browser = webdriver.Chrome()
    browser.maximize_window()
    
    #打开百度首页
    browser.get('https://www.baidu.com/')
    # 根据link_text属性定位元素“新闻”,然后点击按钮
    try:
        browser.find_element_by_link_text('新闻').click()
        print('test post:tag_name')
    except Exception as e:
        print('test fail')
    
    #输出内容:test post:link_text
    • 和link_text定位元素差不多,partial_link_text是通过文字信息中的部分字段来定位元素。
    from selenium import webdriver
    browser = webdriver.Chrome()
    browser.maximize_window()
    
    #打开百度首页
    browser.get('https://www.baidu.com/')
    # 根据partial_link_text属性定位元素“新闻”,然后点击按钮
    try:
        browser.find_element_by_partial_link_text('闻').click()
        print('test post:tag_name')
    except Exception as e:
        print('test fail')
    
    #输出内容:test post:partial_link_text

    7.利用xpath定位元素

    from selenium import webdriver
    browser = webdriver.Chrome()
    browser.maximize_window()
    
    #打开百度首页
    browser.get('https://www.baidu.com/')
    # 根据xpath定位元素
    try:
        browser.find_element_by_xpath('//*[@id="kw"]').send_keys('哈哈')
        print('test post:xpath')
    except Exception as e:
        print('test fail')
    
    #输出内容:test post:xpath

    8.利用CSS定位页面元素

    from selenium import webdriver
    browser = webdriver.Chrome()
    browser.maximize_window()
    
    #打开百度首页
    browser.get('https://www.baidu.com/')
    # 根据css_selector定位元素
    try:
        browser.find_element_by_css_selector('#kw').send_keys('哈哈')
        print('test post:xpath')
    except Exception as e:
        print('test fail')
    
    #输出内容:test post:css_selector

    9.By定位

    • 除了使用上面的方法外,还可以利用find_element()方法,通过By来定位元素。
    • 使用之前需要导入By类:
    #导入By类
    from selenium.webdriver.common.by import By
    • 那么上面的方法还可以改写为:
    browser.find_element(By.ID,'kw')
    browser.find_element(By.NAME,'wd')
    browser.find_element(By.CLASS_NAME,'s_ipt')
    browser.find_element(By.TAG_NAME,'form')
    browser.find_element(By.LINK_TEXT,'新闻')
    browser.find_element(By.PARTIAL_LINK_TEXT,'闻')
    browser.find_element(By.XPATH,'//*[@id="kw"]')
    browser.find_element(By.CSS_SELECTOR,'#kw')
     
  • 相关阅读:
    码农自白:这样成为谷歌工程师
    Vim命令合集
    应该知道的Linux技巧
    在Ubuntu上建立Arm Linux 开发环境
    Linux 下socket通信终极指南(附TCP、UDP完整代码)
    Socket通信原理和实践
    用 gdb 调试 GCC 程序
    Quartz学习记录
    shiro学习记录(三)
    shiro学习记录(二)
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/11531884.html
Copyright © 2011-2022 走看看