【问题标题】:Setting driver path dynamically for Protractor为量角器动态设置驱动程序路径
【发布时间】:2016-11-07 23:08:29
【问题描述】:
我有一个需要针对 IE、CEFmp 和 Chrome 运行的测试。要求如下:
- 对于 IE、Cefmp 和 Chrome 应该是一个 conf.js
- 应从文件中读取浏览器类型并针对该特定浏览器运行测试。
- 对于 Chrome 和 CEFmp 运行,直接连接应该是 true
- 对于 Chrome 和 CEFmp 运行,应该只选择本地路径中指定的特定驱动程序而不是量角器默认路径。
我能够根据文件中提到的值选择特定的浏览器类型,并针对它运行测试,同时将 Chrome 和 CEFmp 浏览器类型的直接连接设置为 true。
但是,我无法找到让测试选择特定 Chrome 驱动程序的解决方案。现在它选择 node_modules/protractor/selenium 中给出的默认驱动程序并使用它运行测试。我想知道是否有办法动态选择特定路径中的驱动程序?
提前致谢。
【问题讨论】:
标签:
javascript
selenium
selenium-webdriver
protractor
【解决方案1】:
我猜你应该:
- 在您的文本文件中设置更多值,例如“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();
【解决方案2】:
看来我找到了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')));
这样,即使protractor 从node_modules 文件夹中选择默认驱动程序,它最终也会使用我们希望它使用的驱动程序。