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

    本篇文字主要学习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')
    
  • 相关阅读:
    Redis系列--3.redis配置
    Redis系列--2.redis安装
    Redis系列--1.redis概述
    Redis系列--4.常用命令汇总
    Redis系列之(六)——集群redis cluster
    Redis系列之(五)——哨兵
    Redis系列之(四)——深入reids优化
    Redis系列之(三)——持久化与复制
    Redis系列之(一)——开发基础
    Python执行系统命令的方法
  • 原文地址:https://www.cnblogs.com/jasontang369/p/9211502.html
Copyright © 2011-2022 走看看