6

同じコードが Firefox で実行されていますが、IE9 では実行されず、「これは WebDriver サーバーの最初の開始ページです」という文字列メッセージが表示されます。他にエラーは見つかりませんでしたが

        public void setUp() throws Exception {

    File file = new File("C:/Users/Sunil.Wali/Desktop/Softwares/IEDriverServer_Win32_2.37.0/IEDriverServer.exe");
    System.setProperty("webdriver.ie.driver", file.getAbsolutePath());

    driver = new InternetExplorerDriver();
    // driver = new FirefoxDriver();

    baseUrl = "https://tssstrpms501.corp.trelleborg.com:12001";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
      @Test
public void testLogin() throws Exception {
    driver.get(baseUrl + "/ProcessPortal/login.jsp");
    driver.findElement(By.id("username")).clear();
    driver.findElement(By.id("username")).sendKeys("sunil.wali");
    driver.findElement(By.id("password")).clear();
    driver.findElement(By.id("password")).sendKeys("Trelleborg@123");
    driver.findElement(By.id("log_in")).click();
    driver.findElement(By.id("processPortalUserDropdown")).click();
    driver.findElement(By.id("dijit_MenuItem_56_text")).click();
}

@After
public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
        fail(verificationErrorString);
    }
}

出力:- 開始された InternetExplorerDriver サーバー (32 ビット) 2.37.0.0 ポート 31651 でリッスン

4

9 に答える 9

5
  • Windows Vista または Windows 7 の IE 7 以降では、各ゾーンの保護モード設定を同じ値に設定する必要があります。値は、すべてのゾーンで同じである限り、オンまたはオフにすることができます。保護モードを設定するには、[ツール] メニューから [インターネット オプション...] を選択し、[セキュリティ] タブをクリックします。ゾーンごとに、タブの下部に「保護モードを有効にする」というラベルの付いたチェックボックスがあります。
  • さらに、IE 10 以降では「拡張保護モード」を無効にする必要があります。このオプションは、[インターネット オプション] ダイアログの [詳細設定] タブにあります。

http://code.google.com/p/selenium/wiki/InternetExplorerDriver#Required_Configuration

于 2014-06-19T21:00:01.793 に答える
1

解決:

ファイルを変更します..\node_modules\protractor\lib\driverProviders\local.js

 /*
 * This is an implementation of the Local Driver Provider.
 * It is responsible for setting up the account object, tearing
 * it down, and setting up the driver correctly.
 *
 * TODO - it would be nice to do this in the launcher phase,
 * so that we only start the local selenium once per entire launch.
 * ------Modified by Jonathan Arias mail: jab504@gmail.com-----------
 */
var util = require('util'),
    log = require('../logger.js'),
    path = require('path'),
    remote = require('selenium-webdriver/remote'),
    fs = require('fs'),
    q = require('q'),
    DriverProvider = require('./driverProvider');

var LocalDriverProvider = function(config) {
  DriverProvider.call(this, config);
  this.server_ = null;
};
util.inherits(LocalDriverProvider, DriverProvider);


/**
 * Helper to locate the default jar path if none is provided by the user.
 * @private
 */
LocalDriverProvider.prototype.addDefaultBinaryLocs_ = function() {
  if (!this.config_.seleniumServerJar) {
    log.debug('Attempting to find the SeleniumServerJar in the default ' +
        'location used by webdriver-manager');
    this.config_.seleniumServerJar = path.resolve(__dirname,
        '../../selenium/selenium-server-standalone-' +
        require('../../config.json').webdriverVersions.selenium + '.jar');
  }
  if (!fs.existsSync(this.config_.seleniumServerJar)) {
    throw new Error('No selenium server jar found at the specified ' +
        'location (' + this.config_.seleniumServerJar +
        '). Check that the version number is up to date.');
  }
  if (this.config_.capabilities.browserName === 'chrome') {
    if (!this.config_.chromeDriver) {
      log.debug('Attempting to find the chromedriver binary in the default ' +
          'location used by webdriver-manager');
      this.config_.chromeDriver =
          path.resolve(__dirname, '../../selenium/chromedriver');
    }

    // Check if file exists, if not try .exe or fail accordingly
    if (!fs.existsSync(this.config_.chromeDriver)) {
      if (fs.existsSync(this.config_.chromeDriver + '.exe')) {
        this.config_.chromeDriver += '.exe';
      } else {
        throw new Error('Could not find chromedriver at ' +
          this.config_.chromeDriver);
      }
    }
  }

 if (this.config_.capabilities.browserName === 'internet explorer') {
    if (!this.config_.IEDriverServer) {
      log.debug('Attempting to find the Internet explorer binary in the default ' +
          'location used by webdriver-manager');
      this.config_.IEDriverServer =
          path.resolve(__dirname, '../../selenium/IEDriverServer');
    }

    // Check if file exists, if not try .exe or fail accordingly
    if (!fs.existsSync(this.config_.IEDriverServer)) {
      if (fs.existsSync(this.config_.IEDriverServer + '.exe')) {
        this.config_.IEDriverServer += '.exe';
      } else {
        throw new Error('Could not find IEDriverServer at ' +
          this.config_.IEDriverServer);
      }
    }
  }

};

/**
 * Configure and launch (if applicable) the object's environment.
 * @public
 * @return {q.promise} A promise which will resolve when the environment is
 *     ready to test.
 */
LocalDriverProvider.prototype.setupEnv = function() {
  var deferred = q.defer(),
      self = this;

  this.addDefaultBinaryLocs_();

  log.puts('Starting selenium standalone server...');

  // configure server
  if (this.config_.chromeDriver) {
    this.config_.seleniumArgs.push('-Dwebdriver.chrome.driver=' +
      this.config_.chromeDriver);
  }
    if (this.config_.IEDriverServer) {
    this.config_.seleniumArgs.push('-Dwebdriver.ie.driver=' +
      this.config_.IEDriverServer);
  }
  this.server_ = new remote.SeleniumServer(this.config_.seleniumServerJar, {
      args: this.config_.seleniumArgs,
      port: this.config_.seleniumPort
    });

  //start local server, grab hosted address, and resolve promise
  this.server_.start().then(function(url) {
    log.puts('Selenium standalone server started at ' + url);
    self.server_.address().then(function(address) {
      self.config_.seleniumAddress = address;
      deferred.resolve();
    });
  });

  return deferred.promise;
};

/**
 * Teardown and destroy the environment and do any associated cleanup.
 * Shuts down the drivers and server.
 *
 * @public
 * @override
 * @return {q.promise} A promise which will resolve when the environment
 *     is down.
 */
LocalDriverProvider.prototype.teardownEnv = function() {
  var self = this;
  var deferred = q.defer();
  DriverProvider.prototype.teardownEnv.call(this).then(function() {
    log.puts('Shutting down selenium standalone server.');
    self.server_.stop().then(function() {
      deferred.resolve();
    });
  });
  return deferred.promise;
};

// new instance w/ each include
module.exports = function(config) {
  return new LocalDriverProvider(config);
};
于 2014-12-10T14:31:16.597 に答える
1

私も同じ問題を抱えていました。そして、ここの2つのコメントが適切に行われたことを確認すると、機能し始めました

  1. 各ゾーンの保護モード設定の値が同じであることを確認してください

  2. ズームが 100% に設定されていることを確認してください。

上記の2つのコメントに感謝します。

于 2016-06-20T07:00:05.510 に答える