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

时间:2016-11-07 23:08:30

标签: javascript selenium selenium-webdriver protractor

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

  1. 应该是IE,Cefmp和Chrome的单一conf.js
  2. 应从文件中读取浏览器类型并针对该特定浏览器运行测试。
  3. 对于Chrome和CEFmp运行,直接连接应该是真的
  4. 对于Chrome和CEFmp运行,应该只选择本地路径中给出的特定驱动程序,而不是来自量角器默认路径。
  5. 我能够根据文件中提到的值选择特定的浏览器类型并针对它运行测试,并为Chrome和CEFmp浏览器类型设置direct connect to true。 但是,我无法找到让测试选择特定Chrome驱动程序的解决方案。现在它选择node_modules / protractor / selenium中给出的默认驱动程序并使用它运行测试。我想知道是否有办法动态选择特定路径中的驱动程序?

    提前谢谢。

2 个答案:

答案 0 :(得分:0)

我想你应该:

  • 在文本文件中设置更多值,例如“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();

答案 1 :(得分:0)

我似乎找到了解决此问题的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文件夹中选择默认驱动程序,它最终也会使用我们希望它使用的驱动程序。