• Webdriver元素定位1


    元素的定位应该是自动化测试的核心,要想操作一个元素,首先应该识别这个元素。

    webdriver提供了一系列的元素定位方法,常用的有以下几种:

    • id
    • name
    • class name
    • tag
    • link text
    • partial link text
    • xpath
    • css selector

    案例:打开百度首页,在搜索框自动输入“Selenium”关键词,然后点击搜索按钮,查看搜索页面

    在此之前,首先使用前端工具查看百度首页的元素,可以查看到各种标签对、标签属性、标签对之间的文本数据以及层级关系等,如下所示:

    <span class="bg s_ipt_wr quickdelete-wrap">
        <span class="soutu-btn"></span>
        <input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">
        <a id="quickdelete" class="quickdelete" href="javascript:;" title="清空" style="top: 0px; right: 0px; display: none;"></a>
    </span>
    <span class="bg s_btn_wr">
        <input id="su" class="bg s_btn" type="submit" value="百度一下">
    </span>

     id定位

    from selenium import webdriver
    from time import sleep
    
    driver=webdriver.Firefox()
    driver.get("http://www.baidu.com")
    
    driver.find_element_by_id("kw").send_keys("selenium")
    sleep(2)
    
    driver.find_element_by_id("su").click()
    sleep(3)
    
    driver.quit()

    HTML规定id属性在HTML文档中必须是唯一的,Webdriver提供的id定位方法就是通过元素的id属性来查找元素。


     name定位

    driver.find_element_by_name("wd").send_keys("selenium")

    HTML规定name来置顶元素的名称,name的属性值,在当前页面中可以不唯一。


    calss定位

    driver.find_element_by_class_name("s_ipt").send_keys("selenium")

    HTML规定class来置顶元素的类名,其用法与id、name类似。


    tag定位

    案例:打开博客园首页页面,在找找看的搜索输入框输入关键词“selenium”,休息3秒后,在Google前面的搜索框输入“selenium”关键词

    from selenium import webdriver
    from time import sleep
    
    driver = webdriver.Firefox()
    driver.get("https://www.cnblogs.com")
    
    #定位标签名为input的元素,默认是第一个
    driver.find_element_by_tag_name("input").send_keys("Selenium")
    sleep(3)
    #获取页面所有标签名为“input”的标签
    driver.find_elements_by_tag_name("input")[1].send_keys("Selenium")
    sleep(3)
    
    driver.quit()

    HTML的本质就是通过tag来定义实现不同的功能,每一个元素本质上也是一个tag。因为一个tag往往用来定义一类功能,所以通过tag识别某个元素的概率很低,很难通过标签tag name去区分不同的元素


     link定位

    案例:打开百度首页的新闻页面

    此时,使用前端工具查看到的页面代码如下:

    <div id="u1">
        <a class="mnav" name="tj_trnews" href="http://news.baidu.com">新闻</a>
        <a class="mnav" name="tj_trhao123" href="http://www.hao123.com">hao123</a>
        <a class="mnav" name="tj_trmap" href="http://map.baidu.com">地图</a>
        <a class="mnav" name="tj_trvideo" href="http://v.baidu.com">视频</a>
        <a class="mnav" name="tj_trtieba" href="http://tieba.baidu.com">贴吧</a>
        <a class="mnav" name="tj_trxueshu" href="http://xueshu.baidu.com">学术</a>
        <a class="lb" onclick="return false;" name="tj_login" href="https://passport.baidu.com/v2/?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F">登录</a>
        <a class="pf" name="tj_settingicon" href="http://www.baidu.com/gaoji/preferences.html">设置</a>
        <a class="bri" style="display: block;" name="tj_briicon" href="http://www.baidu.com/more/">更多产品</a>
    </div>

    Python代码:

    driver.find_element_by_link_text("新闻").click()

    find_element_by_link_text()方法通过元素标签对之间的文本信息来定位元素


     Partial link定位

    driver.find_element_by_partial_link_text('党的十九大精神').click()

    partial link定位是对link定位的一种补充,有些文本链接会比较长,这个时候我们可以取文本链接的一部分定位,只要这一部分信息可以唯一的标识这个链接

  • 相关阅读:
    可分离卷积详解及计算量 Basic Introduction to Separable Convolutions
    全面解读Group Normalization,对比BN,LN,IN
    高斯混合模型(GMM)及MATLAB代码
    VLAD算法浅析, BOF、FV比较
    MATLAB 可以画的各种类型的图总结
    检测算法简介及其原理——fast R-CNN,faster R-CNN,YOLO,SSD,YOLOv2,YOLOv3
    深度学习图像配准 Image Registration: From SIFT to Deep Learning
    在IIS7里配置 ISAPI,运行dll程序,总提示下载dll
    iis7下配置php出现404.17错误的解决办法
    C# Acrobat打开pdf出错,提示Acrobat.AcroPDDocClass不能强制转换为Acrobat.CAcroPDDoc,使用com组件{9B4CD3E7-4981-101B-9CA8-9240CE2738AE},HRESULT: 0x80004002
  • 原文地址:https://www.cnblogs.com/NancyRM/p/8109235.html
Copyright © 2020-2023  润新知