51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 666|回复: 0
打印 上一主题 下一主题

如何使用selenium 的一些思考运用在java中?

[复制链接]
  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 941 天

    连续签到: 3 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2023-6-13 10:52:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    简单介绍selenium
      是一系列基于Web的自动化工具,提供一套测试函数,用于支持Web自动化测试。函数非常灵活,能够完成界面元素定位、窗口跳转、结果比较。

      我们经常是拿来做一些爬虫相关的工具,自动爬取一些数据。
      WebDriver
      在WebDriver中也有类似的三个角色:
      工程师写的自动化测试代码:自动化测试代码发送请求给浏览器的驱动(比如火狐驱动、谷歌驱动)。
      浏览器的驱动:它来解析这些自动化测试的代码,解析后把它们发送给浏览器。
      浏览器:执行浏览器驱动发来的指令,并最终完成工程师想要的操作。

      一些思考
      定位元素
      经常使用的是下面两个方法。
       clickButtonXPath  是根据元素位置去定位,简单就是html
           chromeBrowser.clickElementByXPath("//input[@id='queryForm:btn']/../input[4]");
           简单说一下语法
               // 代表 根元素
               //input  代表将选择页面上的所有input 元素
               [@id='queryForm:btn'] 代表筛选 id 为queryForm:btn 的元素
               / 代表 用来选择子元素
               text() 用来选择拥有特定的文本名称
               contains(属性:属性值)  
               例如:div[contains(text(),'忘记密码')] 将选择div 下文本包含密码的元素



       clickElementByCssSelector 是根据元素的style 去定位,就是css
           chromeBrowser.clickElementByCssSelector("#ul1>li:first-child");
        简单说一下语法:
             #ul1 选择 id=ul1 的元素
             > 代表 子元素
             li:first-child   代表li元素第1个子元素:
             :nth-child(n)    父元素第n个子元素



      iframe
      这个必须拿出来,着重说一下,原先在iframe 外,需要切换到iframe 里进行操作,再要对iframe 外元素进行操作时,需要返回到默认的iframe 外,否则会一直找不到元素。
      通过切换会父元素或者默认元素处理。
      // 切换到父元素
       chromeBrowser.switchToParentFrame("main-frame");

       // 切换到默认内容页面
       chromeBrowser.defaultContent();


      javascriptExecute
      执行脚本 ,遇到比较复杂的操作,需要通过脚本去处理。比如往下滑动滚动条。
       chromeBrowser.javascriptExecute("var queryDivId = document.getElementById('queryDivId');queryDivId.scrollTop = queryDivId.scrollHeight;");

      页面超时加载以及显示等待
      在访问时,由于网络等各种因素,肯定会出现加载慢的情况,我们需要Driver 等待一下。
       driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
       driver.get("https://www.baidu.com");


      显示等待是等待指定元素设置的等待时间,在设置时间内,默认每隔0.5s检测一次当前的页面这个元素是否存在,如果在规定的时间内找到了元素则执行相关操作,如果超过设置时间检测不到则抛出异常。默认抛出异常为:NoSuchElementException。推荐使用显示等待。
       WebDriverWait wait = new WebDriverWait(driver, 5);
       // 查找id为“kw"的元素是否加载出来了(已经在页面DOM中存在)
       wait.until(ExpectedConditions.presenceOfElementLocated(By.id("kw")));

       // 在设定时间内找到后就返回,超时直接抛异常



    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-3 20:15 , Processed in 0.064224 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表