为Protractor动态设置驱动程序路径



我有一个测试,需要对IE,CEFmp和Chrome运行。要求如下:

  1. 应该是一个单一的conf.js为IE,Cefmp和Chrome
  2. 应该从文件中读取浏览器类型,并针对特定的浏览器运行测试。
  3. 对于Chrome和CEFmp运行,直接连接应该为真
  4. 对于Chrome和CEFmp运行,应该只在本地路径中拾取特定的驱动程序,而不是从量角器默认路径中拾取。

我能够根据文件中提到的值选择特定的浏览器类型,并针对它运行测试,同时将Chrome和CEFmp浏览器类型的直接连接设置为true。然而,我无法找到一个解决方案,使测试挑选一个特定的Chrome驱动程序。现在它选择node_modules/protractor/selenium中给出的默认驱动程序,并使用它运行测试。我想知道是否有一种方法可以动态地选择特定路径的驱动程序?

我想你应该:

  • 在你的文本文件中设置更多的值,比如"chrome-x", "chrome-y"
  • 在项目中添加"webdrivers"文件夹
  • 将chromedrivers存储在其中(您需要的每个版本)

然后,在你的代码中:

File chromeDriverFile = new File("webdrivers/" + webdriverAsRetrievedInYourTextFile); // you define the path here
System.setProperty("webdriver.chrome.driver", chromeDriverFile.getAbsolutePath());
WebDriver driver = new ChromeDriver();

似乎我找到了这个问题的kind-of解决方案。如果有更好的方法,请告诉我。

由于我无法找到一种方法将路径重定向到驱动程序以从本地文件夹中选择它,因此我们解决它的一种方法是通过复制并将默认位置驱动程序(node_module)替换为本地驱动程序(我们想要使用的),通过这样做

var fs = require('fs');
fs.createReadStream(path.resolve(__dirname + '/bin/Drivers/CefMp/chromedriver.exe')).pipe(fs.createWriteStream(path.resolve('C:/node_modules/protractor/selenium/chromedriver.exe')));

所以这样,即使protractornode_modules文件夹中选择默认驱动程序,它最终也会使用我们希望它使用的驱动程序。

最新更新