zoukankan      html  css  js  c++  java
  • selenium元素操作、元素定位方式和元素八大定位法则、定位一组元素

     

    1、元素定位方式及元素操作(元素定位方式看习惯使用,推荐第一种)

      1.1、元素定位方式一(此方式不需要导入By类,相对简单易用)

        直接调用:driver.find_element_by_XX(value),如下实例

    # 导入模块
    from selenium import webdriver
    
    # 创建一个浏览器对象
    driver = webdriver.Firefox()
    # 访问网址
    url = 'http://www.baidu.com'
    driver.get(url)
    
    # 使用第一种方式定位输入框
    driver.find_element_by_css_selector('#kw')
    
    # 关闭浏览器
    driver.quit()

      1.2、元素定位方式二(此方式需要先导入By类:from selenium.webdriver.common.by import By)

        使用By类型(需要导入By类):driver.find_element(By.XX,value),如下代码

    # 导入包
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    # 创建一个浏览器对象
    driver = webdriver.Firefox()
    
    # 访问地址
    url = 'http://www.baidu.com'
    driver.get(url)
    
    # 使用第二种方式定位搜索框
    driver.find_element(By.CSS_SELECTOR,'#kw')
    
    # 关闭浏览器
    driver.quit()

      1.3、元素操作(点击、输入、清空输入、提交)

        点击:element.click()

        输入:element.send_keys(value)

        清空输入框:element.clear()

        提交:element.submit()

    # 导入包
    from selenium import webdriver
    import time
    # 创建一个浏览器对象,访问百度
    driver = webdriver.Firefox()
    driver.get('http://www.baidu.com')
    
    # 定位输入框后输入搜索内容,点击搜索
    # 使用css定位
    shu = driver.find_element_by_css_selector('#kw')
    # 输入搜索内容
    shu.send_keys('特战队')
    time.sleep(1)# 意思是休眠一秒
    # 清空输入框
    shu.clear()
    time.sleep(1)
    # 重新输入
    shu.send_keys('渣渣辉')
    time.sleep(1)
    # 定位搜索按钮
    ss = driver.find_element_by_css_selector('#su')
    # 点击搜索
    ss.click()# 这里也可以使用submit()提交来点击操作
    time.sleep(1)
    
    # 关闭浏览器
    driver.quit()

      1.4、元素信息的获取 

        获取元素的文本内容:element.text
        获取元素某个属性的值:element.get_attribute(value)
        获取元素的尺寸:element.size
        获取元素的是否可见:element.is_displayed()

    # 导入包
    from selenium import webdriver
    import time
    # 创建一个浏览器对象,访问百度
    driver = webdriver.Firefox()
    driver.get('http://www.baidu.com')
    
    # 定位到元素
    hao = driver.find_element_by_css_selector('a.mnav:nth-child(2)')
    # 获取文本内容和此元素某个属性的值(
    为换行)
    print('文本内容为:',hao.text,'
    href属性值',hao.get_attribute('href'))
    # 获取元素的尺寸和元素是否可见
    print('元素尺寸:',hao.size,'
    元素是否可见:',hao.is_displayed())
    
    # 关闭浏览器
    driver.quit()

    2、元素八大定位法则

      2.1、ID(定位)

      2.2、name(属性值定位)

      2.3、class name(伪类名定位)

      2.4、tag name(标签名定位)

      2.5、link text(链接文本定位)

      2.6、partail link text(部分链接文本定位)

      2.7、xpath(路径表达式定位)

      2.8、css selector(css选择器定位)

    # 导入包
    from selenium import webdriver
    import time
    # 创建一个浏览器对象,访问百度
    driver = webdriver.Firefox()
    driver.get('http://www.baidu.com')
    
    # ID定位(当某个元素有id值的时候,可以用此方法定位)
    driver.find_element_by_id('kw')
    # name定位(当某个元素拥有name值,且值为唯一,可以用此方式定位)
    driver.find_element_by_name('wd')
    # tag name定位(若某个元素标签名唯一,可以使用此方式)
    driver.find_element_by_tag_name('input')
    # class name定位(当某个元素有class name且唯一,可用此方式)
    driver.find_element_by_class_name('s_ipt')
    # 链接文本定位(欲定位某个链接元素,可以清楚看见其文本内容,可使用此方式)
    driver.find_element_by_link_text('百度一下')
    # 部分链接文本定位(某个链接元素文本只能看清部分内容,且此部分文本内容唯一,可用此方式)
    driver.find_element_by_partial_link_text('度一下')
    # xpath定位(可以任意定位任何元素,此方式表达式不能有错)
    driver.find_element_by_xpath(".//*[@id='kw']")
    # css定位(此方式定位可以直接使用浏览器自带查看元素复制唯一 选择器【Chrome为copy selector】)
    driver.find_element_by_css_selector('#su')
    
    # 关闭浏览器
    driver.quit()

    此八种方式无优劣之分,只有看定位的元素是否方便,或看个人使用习惯使用

    八种方式中xpath和css都较常用,懂其一即可,看习惯使用,前面六种在某些情况下不一定可以成功定位,所有需要多懂几种以免有自己掌握的方式定位不了的情况

     3、定位一组元素

      格式:driver.find_elements_by_XX(vuale)

      定位一组元素的此处也有八种方式,同上,此处以css方式为例

    # 导入包
    from selenium import webdriver
    import time
    # 创建一个浏览器对象,访问百度
    driver = webdriver.Firefox()
    driver.get('http://www.baidu.com')
    
    # 定位到输入框输入内容
    shuru = driver.find_element_by_css_selector('#kw')
    shuru.send_keys('特战旅')
    # 定位到搜索框,点击搜索
    sou = driver.find_element_by_css_selector('#su')
    sou.click()
    # 获取搜索结果(定位一组元素),这里返回的是一个列表,若需要看列表里的东西需要遍历列表
    zu = driver.find_elements_by_css_selector('.t>a')
    # 打印出来的是列表,列表里有10个不同的数字及字母元素
    print(zu)
    # 遍历列表,获取结果的标题及链接
    for i in zu:
        print('标题:',i.text,'/链接地址:',i.get_attribute('href'))
    # 关闭浏览器
    driver.quit()
  • 相关阅读:
    被动信息收集-dns
    Tcpdump
    Netcat-NC 工具的使用
    无线攻击
    无线渗透实操 aircrack-ng suite
    无线渗透技术概念
    sudo提权复现(CVE-2019-14187)
    Django学习小记-ORM操作概要1
    Django学习小记-cookie的使用(判断是否已登陆)
    Plan 4 Local VRF with NAT
  • 原文地址:https://www.cnblogs.com/will-wu/p/13463764.html
Copyright © 2011-2022 走看看