量角器随机执行或偶尔不开始

时间:2018-07-16 07:56:18

标签: selenium-webdriver protractor

我的任务是编写不同的测试和任务自动化套件,但Protractor在过去的几天中一直以一种非常奇怪的方式进行操作,...我只是不记得自上次套件以来所做的任何更改正确运行。

当前使用的是最新驱动程序

% ./node_modules/webdriver-manager/bin/webdriver-manager status
webdriver-manager: using local installed version 12.1.0
[09:14:25] I/status - selenium standalone version available: 3.13.0 [last]
[09:14:25] I/status - chromedriver version available: 2.40 [last]
[09:14:25] I/status - geckodriver version available: v0.21.0 [last]
[09:14:25] I/status - android-sdk is not present
[09:14:25] I/status - appium is not present

最新量角器版本

% ./node_modules/protractor/bin/protractor --version
Version 5.3.2

这是量角器的输出在不运行时看起来像80%的时间:

% ./node_modules/protractor/bin/protractor ./conf.js --suite scenarios --params.login.usr=$USR_E2E --params.login.pwd=$PWD_E2E --params.env=test
(node:1709) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
[09:03:07] W/driverProviders - Using driver provider hosted, but also found extra driver provider parameter(s): seleniumServerJar
[09:03:07] I/launcher - Running 1 instances of WebDriver
[09:03:07] I/hosted - Using the selenium server at http://localhost:4444/wd/hub
[09:03:08] E/launcher - Error: NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"[type="email"]"}
  (Session info: headless chrome=67.0.3396.99)
  (Driver info: chromedriver=2.40.565386 (45a059dc425e08165f9a10324bd1380cc13ca363),platform=Mac OS X 10.14.0 x86_64)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
[09:03:08] E/launcher - Process exited with error code 100

相应的 webdriver-manager的输出

% ./node_modules/webdriver-manager/bin/webdriver-manager start
webdriver-manager: using local installed version 12.1.0
[09:30:49] I/start - java -Dwebdriver.chrome.driver=/Users/cyril/Projects/parkopoly_e2e/node_modules/webdriver-manager/selenium/chromedriver_2.40 -Dwebdriver.gecko.driver=/Users/cyril/Projects/parkopoly_e2e/node_modules/webdriver-manager/selenium/geckodriver-v0.21.0 -jar /Users/cyril/Projects/parkopoly_e2e/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.13.0.jar -port 4444
[09:30:49] I/start - seleniumProcess.pid: 1791
09:30:49.534 INFO [GridLauncherV3.launch] - Selenium build info: version: '3.13.0', revision: '2f0d292'
09:30:49.535 INFO [GridLauncherV3$1.launch] - Launching a standalone Selenium Server on port 4444
2018-07-16 09:30:49.613:INFO::main: Logging initialized @282ms to org.seleniumhq.jetty9.util.log.StdErrLog
09:30:49.752 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 4444
09:30:55.414 INFO [ActiveSessionFactory.apply] - Capabilities are: {
  "browserName": "chrome",
  "chromeOptions": {
    "args": [
      "--disable-extensions",
      "--show-fps-counter=true",
      "--disable-infobars",
      "--incognito",
      "--disable-gpu",
      "--headless"
    ]
  },
  "count": 1
}
09:30:55.415 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.remote.server.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService)
Starting ChromeDriver 2.40.565386 (45a059dc425e08165f9a10324bd1380cc13ca363) on port 24866
Only local connections are allowed.
09:30:55.951 INFO [ProtocolHandshake.createSession] - Detected dialect: OSS
09:30:56.171 INFO [RemoteSession$Factory.lambda$performHandshake$0] - Started new session 9ea12201cba04ac9e41639501f0c02e1 (org.openqa.selenium.chrome.ChromeDriverService)
09:30:56.925 INFO [ActiveSessions$1.onStop] - Removing session 9ea12201cba04ac9e41639501f0c02e1 (org.openqa.selenium.chrome.ChromeDriverService)

这是我当前正在使用的 conf.js 文件:

const SpecReporter = require('jasmine-spec-reporter').SpecReporter;

exports.config = {
  SELENIUM_PROMISE_MANAGER: false,
  rootElement: 'html',
  seleniumServerJar: './bin/selenium-server-standalone-3.12.0.jar',
  seleniumPort: '4444',
  seleniumAddress: 'http://localhost:4444/wd/hub',
  framework: 'jasmine2',
  directConnect: false,
  specs: ['./e2e/**/*.spec.js'],
  suites: {
    cft: './e2e/cft/**/*.spec.js',
    scenarios: './e2e/scenarios/**/*.scenario.js'
  },
  jasmineNodeOpts: {
    isVerbose: true,
    defaultTimeoutInterval: 15000,
    print: function() {}
  },
  capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: ['--disable-extensions', '--show-fps-counter=true', '--disable-infobars', '--incognito', '--disable-gpu', '--headless']
    }
  },
  onPrepare: async function() {
    browser.params.ts = Date.now();
    if (browser.params.env === undefined)
      browser.params.env = 'test';
    await jasmine.getEnv().addReporter(new SpecReporter({
      spec: {
        displayStackTrace: true,
        displaySuccessful: true,
        displayFailed: true,
        displayPending: true,
        displaySpecDuration: true,
        displaySuiteNumber: true
      },
      summary: {
        displayFailures: true,
        displayPending: false
      },
      colors: {
        enabled: true,
        successful: 'green',
        failed: 'red',
        pending: 'yellow'
      }
    }));
    await browser.get('https://dashboard-' + browser.params.env + '.website.com');
    await browser.driver.findElement(by.css('[type="email"]')).sendKeys(browser.params.login.usr);
    await browser.driver.findElement(by.css('[type="password"]')).sendKeys(browser.params.login.pwd);
    await browser.driver.findElement(by.css('[type="submit"]')).click();
    return await browser.driver.wait(function() {
      return browser.driver.getCurrentUrl().then(function(url) {
        return /calendar_bo/.test(url);
      });
    }, 10000);
  }
};

有时,每当量角器启动并启动测试时,它都会遭受比赛条件的影响。 我找不到任何主题,帖子,评论或任何曾经有过此类输出的人。我的想法不多了,我很感谢任何想法或潜在的解决方案。谢谢!

2 个答案:

答案 0 :(得分:0)

没有足够的声誉来发表评论。

是否可以同时配置seleniumServerJar和seleniumAddress?文档规定仅使用1。

  

量角器需要知道如何为它的浏览器连接驱动程序   正在测试。通常,这是通过Selenium服务器完成的。
  有五个选项-指定以下选项之一:

     
      
  1. seleniumServerJar-在本地启动独立的Selenium Server。
  2.   
  3. seleniumAddress-连接到已经运行的Selenium服务器。
  4.   
  5. sauceUser / sauceKey-通过Sauce Labs使用远程Selenium服务器。
  6.   
  7. browserstackUser / browserstackKey-通过BrowserStack使用远程Selenium服务器。
  8.   
  9. directConnect-直接连接到浏览器驱动程序。此选项仅适用于Firefox和Chrome。
  10.   

答案 1 :(得分:0)

您可以在发送电子邮件之前先尝试以下代码吗?

var EC = protractor.ExpectedConditions;
var email_element = element(by.css('[type="email"]'));
browser.wait(EC.visibilityOf(email_element), 10000);
相关问题