Articles of webdriver

Firefox不会等待页面加载Webdriverio

我正在尝试使用Selenium运行我的testing,并刚刚遇到问题。 我有我为Chrome浏览器编写的testing。 现在我一直试图在Firefox浏览器中运行相同的testing,但是失败了。 我已经开始调查这个问题,并发现Firefox不会等到页面完全加载。 Chrome的作品完美。 我在Docker容器中运行Selenium 。 这是我的脚本 storeSearch(info) { let that = this; return new Promise(function (resolve, reject) { browserClient.init() .url("http://somewhere.com") .selectByVisibleText("#store","Tech") // Redirect to a new page .setValue("input[name='search']", info.searchCriteria) .selectByValue(".featured", 'MacBook') .click("button[name='info']") .element('.popup') .then(function (element) { if (element.state === 'success') { } }); }); } 它甚至不会尝试从select .selectByVisibleText("#store","Tech")select一个存储types,而只是抛出一个exception。 “一个元素不能使用给定的search参数(\”input [name ='search'] \“)。”, 我试图添加timeouts但它不工作,给我一个错误。 browserClient.init() […]

来自Javascript API的Selenium WebDriverJS

挣扎了一下,以便同时了解WebDriverJS和promise …并且大部分示例代码都是针对Python / Java,而不是Javascript。 所有我想要做的是获得一个页面的完整的HTML。 所以,如果你看看WebDriverJS的相同的代码: var webdriver = require('selenium-webdriver'); … driver.get('http://www.google.com'); driver.findElement(webdriver.By.name('q')).sendKeys('webdriver'); driver.findElement(webdriver.By.name('btnG')).click(); driver.wait(function() { return driver.getTitle().then(function(title) { return title === 'webdriver – Google Search'; }); }, 1000); 我试图简单地返回整个HTML文档,而不是只有标题。 在Python中,将是driver.page_source。 我从例子中学到了很多东西 ,所以我在这里有点失意。

了解Web驱动程序API

如果我在WebDriver API上理解了W3C的信息,那么实现这个API的浏览器就可以通过使用RESTful API来实现自动化。 也就是说,我可以打开HTTP连接到浏览器,并使用REST向其发送命令。 我也发现这个Gist确认我的猜测是正确的:Node.js脚本直接连接到一个已经作为WebDriver服务器启动的PhantomJS。 到现在为止还挺好。 我现在不明白为什么显然,对于任何其他浏览器,我仍然需要一个selenium​​服务器。 即使像webdriverjs这样的项目也要求我运行一个Selenium服务器。 我的问题是:为什么? 不应该有一个额外的Selenium服务器自动化浏览器? 如果浏览器不能直接提供这个API(就像PhantomJS显然那样)? 任何人都可以点亮一下吗?

如何在NodeJs中loggingwebdrivertesting的video

我打算使用node.JS webdriver / Mocha /量angular器中的任一个。 有没有一种简单的方法来录制video中的任何一个? 我已经看过在运行testing时使用ffmpeglogging整个屏幕的选项,但是如果有任何nodejs库可以帮助我直接logging任何这些video。 我会用这个。

节点WebDriverJS的executeScript行为

我有一个WebDriverJS节点脚本在应用程序的全局范围内具有以下内容: var helperFunctions = { 'getElementEssentials': function get(orig, tmp, level) { var tmp = tmp || {}; var level = level || 0; for(var i in orig) { if(!orig[i]) { continue; } if(typeof(orig[i]) === 'function' || typeof(orig[i]) === 'object' || level > 1) { continue; } if(typeof(orig[i]) === 'array') { level++; get(orig[i], tmp, level); continue; […]

量angular器networking驱动程序与Linux上的selenium

我有以下设置: 量angular器运行从一个Windows虚拟机使用一个独立的selenium服务器上的一个Linux无头盒子。 这个想法是在我的windows vm上安装了chrome,并且量angular器使用这个chrome安装来通过linux上的selenium运行testing。 我使用webdriver-manager启动在linuxx盒子上启动selenium服务器。 当我从VM运行testing时,出现以下错误 Caused by: org.openqa.selenium.WebDriverException: unknown error: cannot find Chrome binary (Driver info: chromedriver=2.14.313457 (3d645c400edf2e2c500566c9aa096063e707c9cf),platform=Linux 2.6.32-431.29.2.el6.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 134 milliseconds Build info: version: '2.45.0',java.version: '1.7.0_79' Driver info: org.openqa.selenium.chrome.ChromeDriver at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204) […]

如何使用Webdriver控制Firefox扩展的边栏

我正在尝试使用由selenium-webdriver NodeJs包提供的相关驱动程序来testingFirefox扩展。 该扩展创build了一个侧边栏,其句柄我无法使用getAllWindowHandles方法find。 花了一些时间阅读文档,似乎Selenium不支持标签; 也许这就是为什么。 有没有办法检索一个Firefox(扩展)边栏的句柄,以便能够在其上运行testing?

将variables从beforeLaunch传递给onPrepare

我在configuration中使用了带有sharedTestFiles: true ,我需要为将为所有套件运行的所有报告创build一个公共文件夹。 试图通过在beforeLaunch定义一个datevariables来实现这beforeLaunch ,然后将其传递给onPrepare函数,但它返回undefined 。 我试图等待datevariables被定义(认为这可能是一个asynchronous问题),但即使在等待10秒后,date仍然没有定义。 这甚至是可能的,可以通过一个variables从beforeLaunch到onPrepare ? beforeLaunch: function() { date = dateTime.getFullDateTime(); } onPrepare: function() { return webdriver.promise.delayed(1000).then(function() { return browser.driver.wait(function() { if(date !== undefined) { return true; } } }, 10000, 'onPrepare wait'); }

webdrivererror:连接重置

这是我在控制台没有任何改变在npm或在代码,没有发现在互联网上有关这个问题 [14:29:48] I/local – Starting selenium standalone server… [14:29:48] I/launcher – Running 1 instances of WebDriver [14:29:50] I/local – Selenium standalone server started at http://192.168.80.132:49611/wd/hub D:\Workspace\pen\content\node_modules\protractor\node_modules\selenium-webdriver\error.js:27 super(opt_error); ^ WebDriverError: Connection reset at WebDriverError (D:\Workspace\pen\content\node_modules\protractor\node_modules\selenium-webdriver\error.js:27:10) at Object.checkLegacyResponse (D:\Workspace\pen\content\node_modules\protractor\node_modules\selenium-webdriver\erro r.js:580:13) at D:\Workspace\pen\content\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:64:13 at Promise.invokeCallback_ (D:\Workspace\pen\content\node_modules\protractor\node_modules\selenium-webdriver\lib\pro mise.js:1329:14) at TaskQueue.execute_ (D:\Workspace\pen\content\node_modules\protractor\node_modules\selenium-webdriver\lib\promise. js:2790:14) at TaskQueue.executeNext_ (D:\Workspace\pen\content\node_modules\protractor\node_modules\selenium-webdriver\lib\prom ise.js:2773:21) at D:\Workspace\pen\content\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2652:27 at […]

差异protractor.controlFlow().exec和browser.call()

我知道要将一个自定义函数插入到量angular器控制stream程中,您可以使用protractor.controlFlow()。execute,如下所示: protractor.promise.controlFlow().execute(function() { return getData().then(function(my_data) { return my_data.some_process(); }); }); 但是,似乎我可以使用browser.call()方法做同样的事情: browser.call(function() { return getData().then(function(my_data) { return my_data.some_process(); }); }); 据我所知,browser.call是webdriver控制stream的包装,protractor.controlFlow()与量angular器本身具有类似的function。 两者都回报“承诺”,所以他们似乎在做同样的事情。 两种方法是可以互换的吗? 如果不是的话,我什么时候该用这个或那个。