首页 > Web开发 > 详细

自动化测试之~web元素及常用操作~~

时间:2020-03-10 15:28:27      阅读:60      评论:0      收藏:0      [点我收藏+]

html常见元素

----    form标签:用于页面向后端提交数据,需要提交数据的标签就放在form标签里面,这个标签带一个action属性,把数据需要提交的地址放在里面

----    <input type="text">   文本输入框

----    <input type="radio">   单选框

----    <input type="checkbox">    复选框

----    <input type="file">    长传文件

----    <input type="submit">   提交按钮

----    <input type="button" value="点我啊">      按钮

-----   <img src="图片路径" width="270" height="170">    图片

-----   <a href="点击后要跳转的链接地址">链接文本内容</a>    链接

-----    <table>       表格

           <th>表头</th>
           <tr>行</tr>
            <td>列</td>
         </table>

----           <ul>                           列表

                       <li>这是列表 1 </li>
                       <li>这是列表 2 </li>
               </ul>

----       下拉选项

<select name="这是name" id="">
    <option value="1">选项1</option>

    <option value="2">选项2</option>
</select>

-----     <iframe src="内嵌页面的地址" frameborder="0"></iframe>    页面嵌套页面

-----     <textarea name="" id="" cols="30" rows="10"></textarea>     多文本域输入框

-----     弹窗:JavaScript的三种弹框方式,他不是html实现的,因此不能用html页面元素去定位获取,用Alert类处理

             1)alert  只有一个确定按钮,不需要元素定位,优先级最高

             2)confirm  取消和确定按钮

             3)prompt  有一个输入框,输入内容后点击确定或取消按钮弹框消失

 

元素定位

八大定位方式:

一、  根据元素的某个属性查找(6种): id   name   class_name      tag_name     只针对a元素(链接):link_text   和   portial_link_text

二、  多个属性组合查找元素:

1    css_selector

2     xpath(项目中用得最多)

          1)绝对路径:页面上的上级下级元素容易改变,因此用绝对路径没有相对路径灵活

          2)相对路径

                        原则:----    先找我们想定位的元素,取元素和属性,如果现在不能唯一过滤,则再在该元素的上级去查找元素,用多重位置定位元素

                                   ----    相对定位--靠自己的特征来定位,不在乎第几代,不在乎是哪个小弟   以 // 开头

                                   ----    在取上级元素时,优先使用id等特征比较明显的属性,不一定非要父级元素

 

          A    属性匹配   //标签名【@属性=值】      例  //i[@class="ing"]

          B     文本值匹配   //标签名【text()=值】       例  //a[text()="公告"]

          c     包含  //标签名[contains(@属性/text(),值)]       例   //a[contains(@href,"/Notify/index/courseid/")]       //a[contains(text(),"公告")]

          D    逻辑运算 (and  or) 组合更多的元素特征     //标签名【@属性=值  and @属性=值  and  contains(@属性/text(),值】)  and text()=值

                                                                                         例  //a[text()="公告" and contains(@href,"/Notify/index/courseid/")]

          E     //一级元素//二级元素//。。。层级定位    //div[@id="number-attend"]//i[@class="ing"]

          F     轴定位:分析关系找元素,主要运用在页面显示为一个表格样式的数据列,需要通过组合来定位元素

                                常用参数:ancestor   祖先节点     包括父亲

                                                  parent  父节点  

                                                  preceding-sibling  当前元素节点标签之前的所有兄弟节点

                                                  following-sibling   当前元素节点标签之后的所有兄弟节点

                                                  preceding  当前元素节点标签之前的所有节点

                                                  following  当前元素节点标签之后的所有节点

 

                                   使用语法:   已知元素/轴::标签名【@属性=值】

                                                        例  //div//table//td//preceding::td

                                                        例  //dd[@data-val="公告"]/following-sibling::dd[contains(@class,"batscore")]/span

 

          G     下标/js:    很少用,一般用上面的方法能够解决大部分的定位问题

 

三大等待

     ——  强制等待    time.sleep(2)

     ——  隐性等待    driver.implicitly_wait(5)

                 1)  每一个会话当中,只需要被调用一次,因此一般要用隐性等待时,都是写在初始化driver后面

                 2)  一个元素被找到-元素存在或者一条命令执行完成

                 3)   在实际工作中,这种方式不常用

     ——  显性等待   WebDriverWait(浏览器对象,等待的时间).until/not unitil...条件模块

                  1)显性等待适合很多场景,比如某个元素可见,等待新的窗口出现,等待url变更为xxx。。。

                  2) 等待:等待上线--值,轮询周期--多久去确认一下条件是否成立。WebDriverWait类默认的是0.5秒,  条件模块:Expected_condition

                  3)引入   from selenium.webdriver.support.wait import WebDriverWait 

                                  from selenium.webdriver.support import expected_conditions

                                  #找到定位得元素    loc=("xpath",‘//a[text()=" - SeleniumHQ Browser Autionmation"])

                                  # 等待10秒,每0.5秒轮询一次,直到元素存在 WebDriverWait(driver,10,0.5).until(EC.visibility_of_element_located(loc))

                                  #找到元素并执行操作  driver.find_element(*loc).click()

 

 

三大切换(三大切换,建议都要加上time.sleep(1)---稳定性)

  切换窗口:  当页面的操作,打开了一个新的窗口,需要在新的窗口当中,去进行下一步操作时

       原理:所有的窗口存储在一个列表中,根据窗口出现的先后先后顺序,追加到列表中

                  wins= driver.window_handles    得到所有已打开的窗口

        使用:driver.swith_to_windows(win【-1】)切换窗口到最新打开的窗口

 

 

 

  切换iframe:   iframe页面内嵌页面,当你要操作的元素在iframe中,需要切换到内嵌页面中

        怎么看元素在iframe当中:用F12   +  ctrl   F   看要操作的元素路径是否含iframe

        使用: iframe是标签对,是当前默认HTML中的一个元素

                    driver.switch_to_frame(参数)         

                         参数的三种方式:iframe下标     driver.switch_to.frame(3)

                                                      iframe元素的name属性          driver.switch_to.frame("login_frame_qq")

                                                      iframe这个webelement元素     

                                                                        driver.switch_to.frame(driver.find_element_by_xpath(" //iframe [@name="login_frame_qq"]"))

 

 

 

 

  切换alert:三大切换:窗口、iframe、alert(alter、prompt、confirm统称为alert弹框)

        使用:找到要切换得元素,点击出发弹框    driver.find_element_by_id(‘press_button‘).click()

                   等待弹框出现   time.sleep(1)

                   切换到弹框    alert = driver.switch_to_alert()

                   接受弹框操作,以及其他需要处理得操作    alert.accept()

 

       

 

自动化测试之~web元素及常用操作~~

原文:https://www.cnblogs.com/jiandanzhou/p/12455693.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!