• Jmeter系列-webdriver代码范例


    范例

    WDS.sampleResult.sampleStart()
    try{
    //打开博客首页
    WDS.browser.get('http://xqtesting.blog.51cto.com')
    //测试代码结束
    WDS.sampleResult.sampleEnd()
    }catch(x){
    WDS.sampleResult.sampleEnd()
    //设置为结果失败
    WDS.sampleResult.setSuccessful(false)
    //返回信息设置为-_- sorry
    WDS.sampleResult.setResponseMessage('-_- sorry')
    }

    以上是最简单的使用,算是一个尝鲜吧,其中WebDriver Sampler中代码编写可以扩展,和你编写WebDriver一样,可以利用By.id,By.cssSelector等方法进行元素的定位并操作,类似如下代码:

    var pkg = JavaImporter(org.openqa.selenium)
    WDS.browser.findElement(pkg.By.id('what')).sendKeys(['xiaoqiang'])
     try {
    
         var pkg = JavaImporter(org.openqa.selenium, org.openqa.selenium.support.ui)
         WDS.log.info('WDS Name:' + WDS.name)
         WDS.sampleResult.sampleStart()
    
         WDS.browser.navigate().to('https://app2.hoau.com:8423/cas2')
         WDS.log.info('Browser Title:' + WDS.browser.getTitle())
         WDS.log.info('Browser CurrentUrl:' + WDS.browser.getCurrentUrl())    
         WDS.log.info('Cookie:' + WDS.browser.manage().getCookies())   
         WDS.log.info('Request Header: ' + WDS.sampleResult.getRequestHeaders())
    
         var what = WDS.browser.findElement(pkg.By.id('username'))
         what.sendKeys(['test01'])
         var where = WDS.browser.findElement(pkg.By.id('password'))
         where.sendKeys(['psw01'])
    
    
         //   var button = WDS.browser.findElement(pkg.By.cssSelector('.btn-submit'))
         var button = WDS.browser.findElement(pkg.By.xpath("//input[@type='submit']"))
         button.click()
    
    
         var wait = new pkg.WebDriverWait(WDS.browser, 10)
         wait.until(pkg.ExpectedConditions.presenceOfElementLocated(pkg.By.xpath("//a[@title='Click here to log out']")))
         var results = WDS.browser.findElements(pkg.By.xpath("//a[@title='Click here to log out']"))
         WDS.log.info('Result: ' + results)
    
         if(results.empty) {
             WDS.sampleResult.successful = false
             WDS.sampleResult.responseMessage = 'There were no results returned'
         }
    
         var iter = results.iterator()
         var element = iter.next()
         WDS.log.info('User: ' + element.getText())
    
         if('test01' != element.getText()) {
             WDS.sampleResult.successful = false
             WDS.sampleResult.responseMessage = 'Login Failure'
         }
    
         WDS.sampleResult.sampleEnd()
     } catch(ex) {
         WDS.log.error(ex)
         WDS.sampleResult.successful = false
         WDS.sampleResult.responseMessage = 'There were no results returned'
         WDS.sampleResult.sampleEnd()
     }

    扩展

    为了解WDS 在JMeterUI下javascript脚本的能力,以及涉及到面问题相关的源码。

    • WDS (JMeterPlugins-WebDriver.jar)
    com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler
    com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverScriptable
    
      package com.googlecode.jmeter.plugins.webdriver.sampler;
    
      import org.apache.jmeter.samplers.SampleResult;
      import org.apache.log.Logger;
      import org.openqa.selenium.WebDriver;
    
      public final class WebDriverScriptable
      {
        private static final String[] EMPTY_ARGS = new String[0];
        private String name;
        private String parameters;
        private Logger log;
        private WebDriver browser;
        private SampleResult sampleResult;
    
        public void setName(String name)
        {
          this.name = name;
        }
    
        public String getName() {
          return this.name;
        }
    
        public void setParameters(String parameters) {
          this.parameters = parameters;
        }
    
        public String getParameters() {
          return this.parameters;
        }
    
        public String[] getArgs() {
          return this.parameters != null ? this.parameters.trim().replaceAll("\s+", " ").split(" ") : EMPTY_ARGS;
        }
    
        public void setLog(Logger log) {
          this.log = log;
        }
    
        public Logger getLog() {
          return this.log;
        }
    
        public void setBrowser(WebDriver browser) {
          this.browser = browser;
        }
    
        public WebDriver getBrowser() {
          return this.browser;
        }
    
        public void setSampleResult(SampleResult sampleResult) {
          this.sampleResult = sampleResult;
        }
    
        public SampleResult getSampleResult() {
          return this.sampleResult;
        }
      }   
    • WDS.browser (WebDriver - selenium-api-2.47.0.jar)
    org.openqa.selenium.WebDriver
    org.openqa.selenium.Cookie
    
    package org.openqa.selenium;
    
    import java.net.URL;
    import java.util.List;
    import java.util.Set;
    import java.util.concurrent.TimeUnit;
    import org.openqa.selenium.logging.Logs;
    
    public abstract interface WebDriver extends SearchContext
    {
      public abstract void get(String paramString);
    
      public abstract String getCurrentUrl();
    
      public abstract String getTitle();
    
      public abstract List<WebElement> findElements(By paramBy);
    
      public abstract WebElement findElement(By paramBy);
    
      public abstract String getPageSource();
    
      public abstract void close();
    
      public abstract void quit();
    
      public abstract Set<String> getWindowHandles();
    
      public abstract String getWindowHandle();
    
      public abstract TargetLocator switchTo();
    
      public abstract Navigation navigate();
    
      public abstract Options manage();
    
      @Beta
      public static abstract interface Window
      {
        public abstract void setSize(Dimension paramDimension);
    
        public abstract void setPosition(Point paramPoint);
    
        public abstract Dimension getSize();
    
        public abstract Point getPosition();
    
        public abstract void maximize();
      }
    
      public static abstract interface ImeHandler
      {
        public abstract List<String> getAvailableEngines();
    
        public abstract String getActiveEngine();
    
        public abstract boolean isActivated();
    
        public abstract void deactivate();
    
        public abstract void activateEngine(String paramString);
      }
    
      public static abstract interface Navigation
      {
        public abstract void back();
    
        public abstract void forward();
    
        public abstract void to(String paramString);
    
        public abstract void to(URL paramURL);
    
        public abstract void refresh();
      }
    
      public static abstract interface TargetLocator
      {
        public abstract WebDriver frame(int paramInt);
    
        public abstract WebDriver frame(String paramString);
    
        public abstract WebDriver frame(WebElement paramWebElement);
    
        public abstract WebDriver parentFrame();
    
        public abstract WebDriver window(String paramString);
    
        public abstract WebDriver defaultContent();
    
        public abstract WebElement activeElement();
    
        public abstract Alert alert();
      }
    
      public static abstract interface Timeouts
      {
        public abstract Timeouts implicitlyWait(long paramLong, TimeUnit paramTimeUnit);
    
        public abstract Timeouts setScriptTimeout(long paramLong, TimeUnit paramTimeUnit);
    
        public abstract Timeouts pageLoadTimeout(long paramLong, TimeUnit paramTimeUnit);
      }
    
      public static abstract interface Options
      {
        public abstract void addCookie(Cookie paramCookie);
    
        public abstract void deleteCookieNamed(String paramString);
    
        public abstract void deleteCookie(Cookie paramCookie);
    
        public abstract void deleteAllCookies();
    
        public abstract Set<Cookie> getCookies();
    
        public abstract Cookie getCookieNamed(String paramString);
    
        public abstract WebDriver.Timeouts timeouts();
    
        public abstract WebDriver.ImeHandler ime();
    
        @Beta
        public abstract WebDriver.Window window();
    
        @Beta
        public abstract Logs logs();
      }
    } 

    以上要注意内部静态类 Options里面提供的,对Cookie进行操作的API。

  • 相关阅读:
    在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)
    线程的5种状态详解
    哈希表(Hash Table)原理及其实现 【转载】
    notify() 和 notifyAll() 有什么区别? wait()
    B树、B-树、B+树、B*树介绍,和B+树更适合做文件索引的原因 【转】
    pthread_join和pthread_detach的用法 【】转载】
    什么是进程?什么是线程
    进程间的五种通信方式介绍【转载】
    81. Search in Rotated Sorted Array II
    33. Search in Rotated Sorted Array
  • 原文地址:https://www.cnblogs.com/zhuochong/p/10118741.html
Copyright © 2020-2023  润新知