• Selenium3(二)


    Selenium3多种元素定位,动态提示判断操作

      八大元素定位:

        1)根据id来进行定位

    <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

    #昨天代码中的driver.find_element_by_id('kw')这个代码就是python中根据id来进行定位

        2)根据Name来进行定位

    <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

    #driver.find_element_by_name("wd")

        3)根据class_name来进行定位(可能会存在错误的情况,并不唯一class_name)

    <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

    #driver.find_element_by_class_name("s_ipt")

        4)根据tag_name来进行定位(标签属性)

    <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
    #对应的标签属性是input,但在页面中可能存在多个input的情况,不常用标签定位
    #driver.find_element_by_tag_name

        5)根据link_text来进行定位(精确链接的文本)

    <a href="http://news.baidu.com" target="_blank" class="mnav">新闻</a>
    #链接文本定位是不能输入只能点解
    #driver.find_element_by_link_text("新闻")

        6)根据partial_link_text来进行定位(模糊链接文本)

    <a href="http://news.baidu.com" target="_blank" class="mnav">新闻</a>

    #driver.find_element_by_partial_link_text("新闻")

        7)根据Xpath来进行定位

    <input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off">
    #在谷歌浏览器中可以直接copy Xpath 如上标签的Xpath为//*[@id="kw"]
    #driver.find_element_by_xpath("//*[@id="kw"]")

        8)根据css_selector来进行定位

    <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
    //和Xpath一样,上标签的为"#kw"
    //driver.find_element_by_css_selector("#kw")

    详解Xpath和css(是路径语言用来确定某个位子的语言,相当于一个坐标)

      Xpath和css:

        属性定位(可以根据元素中的id或者name来定位的):

    #Xpath
    driver.find_element_by_xpath("//*[@id="kw"]") //这个就是用属性来定位 #"//*[@id="kw"]" //------//*代表所有标签 //------[@id="kw"] 查询id为kw的元素   
    // CSS
    driver.find_element_by_css_selector("#kw")
    //在CSS中直接用.加上class属性名就可以了定位了,i#加上id名进行查找,以标签来定位是直接用标签名

        其他属性:

    //XPach
    <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
    //driver.find_element_by_xpach("//*[@autocomplete="off"]")
    // CSS
    driver.find_element_by_css_selector("[autocomplete='off']")

        标签定位(标签很容易重复只有和其他属性进行混合使用):

    //XPach
    <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
    //driver.find_element_by_xpach("//input[@autocomplete="off"]")
    //把*更改为标签
    // CSS
    driver.find_element_by_css_selector("input#kw")

        层级定位:

    <form name="f" id="form" action="/s" class="fm" onsubmit="javascript:F.call('ps/sug','pssubmit');">
    <span id="s_kw_wrap" class="bg s_ipt_wr quickdelete-wrap">
    <span class="soutu-btn"></span><input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
    <a href="javascript:;" id="quickdelete" title="清空" class="quickdelete" style="top: 0px; right: 0px; display: none;"></a>
    </span><input type="hidden" name="rsv_spt" value="1"><input type="hidden" name="rsv_iqid" value="0xd36c478c00042bb2">
    <input type="hidden" name="issp" value="1">
    <input type="hidden" name="f" value="8">
    <input type="hidden" name="rsv_bp" value="0">
    <input type="hidden" name="rsv_idx" value="2">
    <input type="hidden" name="ie" value="utf-8">
    <input type="hidden" name="rqlang" value="">
    <input type="hidden" name="tn" value="baiduhome_pg">
    <input type="hidden" name="ch" value="">
    <span class="btn_wr s_btn_wr bg" id="s_btn_wr">
    <input type="submit" value="百度一下" id="su" class="btn self-btn bg s_btn"></span>
    <span class="tools">
    <span id="mHolder">
    <div id="mCon"><span>输入法</span>
    </div><ul id="mMenu">
    <li><a href="javascript:;" name="ime_hw">手写</a>
    </li><li><a href="javascript:;" name="ime_py">拼音</a></li>
    <li class="ln"></li>
    <li><a href="javascript:;" name="ime_cl">关闭</a></li></ul>
    </span><span class="bd_bear_home"></span></span>
    <input type="hidden" name="rsv_enter" value="1">
    </form>
    //XPach
    //driver.find_element_by_xpach("//form[@id='form'/span/input]")
    // CSS
    driver.find_element_by_css_selector("form#form>span>input")
    //以>分割标签

        索引定位(在同一个层级下同标签):

    <div id="u_sp" class="s-isindex-wrap s-sp-menu">
     <a href="http://news.baidu.com" target="_blank" class="mnav">新闻</a> <a href="https://www.hao123.com" target="_blank" class="mnav">hao123</a> 
    <a href="http://map.baidu.com" target="_blank" class="mnav">地图</a>
    <a href="http://v.baidu.com" target="_blank" class="mnav">视频</a>
    <a href="http://tieba.baidu.com" target="_blank" class="mnav">贴吧</a> 
    <a href="http://xueshu.baidu.com" target="_blank" class="mnav">学术</a><a id="s_username_top" class="s-user-name-top" data-tid="2004" href="http://i.baidu.com/" target="_blank">
    <span class="user-name">手冢卿枫</span></a>
    <a id="s_usersetting_top" href="javascript:;" name="tj_settingicon" class="pf s-user-setting-top">
    <span class="setting-text">设置</span></a>
    <a href="http://www.baidu.com/more/" name="tj_briicon" class="s_bri" target="_blank"> 更多产品</a><div id="s_user_name_menu" class="s-isindex-wrap s-user-set-menu menu-top" style="display:none;"><div> <a href="http://i.baidu.com/center" target="_blank" data-tid="1000"> 个人中心 </a> 
    <a href="http://passport.baidu.com/" data-tid="1001" target="_blank"> 帐号设置 </a> <a class="s-feedback" style="overflow:hidden" href="#" onclick="return false;">意见反馈</a> 
    <a class="quit" style="overflow:hidden" href="#" onclick="return false;"> 退出 </a> 
    </div> 
    <span class="menu-arrow"> <em></em> </span> </div>
    //XPach
    //driver.find_element_by_xpach("//div[@id='u1'/a[1]]").click
    //坐标以1开头,进入新闻页面
    // CSS
    driver.find_element_by_css_selector("div#u1>a:nth-child(1)").click()
    //以>分割标签

        模糊匹配(css模糊匹配语法已废除):

    //XPach
    //driver.find_element_by_xpach("//*[contains(text(),'新闻')]").click
    //driver.find_element_by_xpach("//*[contains(@id,kw)]").click

    八种定位方法(以复数形式定位的):

      以复数形式定位是指在html中存在多个属性元素,查询到的是一个数组类型的列表

    <div id="u_sp" class="s-isindex-wrap s-sp-menu">
     <a href="http://news.baidu.com" target="_blank" class="mnav">新闻</a> 
    <a href="https://www.hao123.com" target="_blank" class="mnav">hao123</a> <a href="http://map.baidu.com" target="_blank" class="mnav">地图</a> <a href="http://v.baidu.com" target="_blank" class="mnav">视频</a> <a href="http://tieba.baidu.com" target="_blank" class="mnav">贴吧</a> <a href="http://xueshu.baidu.com" target="_blank" class="mnav">学术</a><a id="s_username_top" class="s-user-name-top" data-tid="2004" href="http://i.baidu.com/" target="_blank"> <span class="user-name">手冢卿枫</span></a> <a id="s_usersetting_top" href="javascript:;" name="tj_settingicon" class="pf s-user-setting-top"> <span class="setting-text">设置</span></a> <a href="http://www.baidu.com/more/" name="tj_briicon" class="s_bri" target="_blank"> 更多产品</a><div id="s_user_name_menu" class="s-isindex-wrap s-user-set-menu menu-top" style="display:none;"><div> <a href="http://i.baidu.com/center" target="_blank" data-tid="1000"> 个人中心 </a> <a href="http://passport.baidu.com/" data-tid="1001" target="_blank"> 帐号设置 </a> <a class="s-feedback" style="overflow:hidden" href="#" onclick="return false;">意见反馈</a> <a class="quit" style="overflow:hidden" href="#" onclick="return false;"> 退出 </a> </div> <span class="menu-arrow"> <em></em> </span> </div>
    mnav=driver.find_elements_by_xpath("//a[@class='mnav']")
    print(len(mnav))

    其他两种定位方式:

      单数形式: 

    driver.find_element(by='id',value='kw').send_keys('selenium')

      复数形式:

    mnav=driver.find_elements(by='class name',value='mnav')
    print(len(mnav))

    Selenium简单操作:

      1)点击页面按钮:click()

      2)清空输入框:clear()

      3)输入字符串:send_keys()

      4)提交表单:submit()

    Selenium键盘操作:

      1)from selenium.webdriver.common.keys import Keys

      2)enter键:send_keys(Keys.ENTER)

      3)jianpanF1到F12:send_keys(Keys.F1)

      4)复制CTRL+C:send_keys(Keys.CONIROL,'c')

      5)粘贴CTRL+V:send_keys(Keys.CONIROL,'v')

      6)全选CTRL+A:send_keys(Keys.CONIROL,'a')

      7)剪切CTRL+X:send_keys(Keys.CONIROL,'x')

      8)制表符TAB:send_keys(Keys,TAB)

    Selenium鼠标悬停事件:

      1)from  selenium.webdriver.common.action_chains import ActionChains

      2)鼠标悬停:move_to_element(元素对象)

      3)右击鼠标:context_click()

      4)双击鼠标:double_click()

      

      

    文章链接地址:http://mumuling.com/?p=82  

        

  • 相关阅读:
    单元测试练习
    对软件的看法
    个人最终总结
    论文笔记--Fast RCNN
    个人最终总结2
    结对编程--基于android平台的黄金点游戏(2.0版本)
    结对编程--基于android平台的黄金点游戏
    团队作业(一)
    [java]wordcount程序
    第三周作业(二)
  • 原文地址:https://www.cnblogs.com/cpxjl/p/9151488.html
Copyright © 2020-2023  润新知