Tag: selenium

Selenium&webdriver.io如何使用executeScript?

我试图用Selenium,W​​ebDriver.io和Node.js(用Mocha)来testing一个简单的表单。 所以我有这样的东西: var webdriverio = require('webdriverio'); var expect = require('expect'); describe('Test form', function(){ beforeEach(function() { browser.url('/'); }); it('should save object', function() { expect(browser.executeScript('return window.data;')).to.be([]); }); afterEach(function() { if (this.currentTest.state !== "passed") { browser.saveScreenshot(); } }); }); 我的wdio.conf.js : var selenium = require('selenium-standalone'); var seleniumServer; exports.config = { host: '127.0.0.1', port: 4444, specs: [ 'test/*.spec.js' ], […]

TypeError:By.cssSelector不是一个函数

我使用npm的Selenium Webdriver。 我无法使By.cssSelector工作。 其他一切: By.tagName , By.id等 码: var webdriver = require('selenium-webdriver'), By = require('selenium-webdriver').By, until = require('selenium-webdriver').until var driver = new webdriver.Builder() .forBrowser('firefox') .build() driver.get('http://www.facebook.com/') driver.findElement(By.name('email')).sendKeys('xxx@gmail.com') driver.findElement(By.name('pass')).sendKeys('xxx') driver.findElement(By.id('pass')).submit() driver.findElement(By.name('xhpc_message')).sendKeys('https://www.youtube.com/watch?v=UfvZvd-kjyo') driver.wait(function () { return driver.isElementPresent(driver.findElement(By.cssSelector(".uiScaledImageContainer"))) }, 10000) 我得到这个错误: alex @ alex-K43U:〜/ node / sapp $ node app.js /home/alex/node/sapp/node_modules/selenium-webdriver/lib/goog/async/nexttick.js:41 goog.global.setTimeout(function( ){throw exception;},0); ^ TypeError:By.cssSelector不是一个函数 我究竟做错了什么?

当Angular不可用时,如何等待一个元素与量angular器可见?

我有一个用于量angular器testing的login函数,它看起来像这样: var config = require("../helpers/config.js"); var login = function() { browser.driver.get(config.dsp.url); browser.driver.findElement(by.name("userName")).sendKeys(config.dsp.user); browser.driver.findElement(by.name("password")).sendKeys(config.dsp.password); return browser.driver.findElement(by.name("submit")).click().then(function() { return browser.driver.wait(function() { return browser.driver.isElementPresent(browser.driver.findElement(by.className("sample-class-name"))); }, 360000); }); } module.exports = login; 我不能使用任何量angular器特定的钩子,因为在这个页面上没有使用Angular,所以我必须使用底层的webdriver API。 问题是,我似乎无法弄清楚如何等待,直到一个元素是可见的使用这个包装的webdriver对象。 任何帮助,将不胜感激。

如何改变selenium webdriver nodejs land中的selenium用户代理?

我在JavaScript +摩卡+节点土地。 我曾尝试将userAgent和“user-agent”设置为function上的键: var webdriver = require('selenium-webdriver'); var ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X)'; var driver = new webdriver.Builder(). … withCapabilities({ 'browserName': 'firefox', userAgent: ua, 'user-agent': ua, }). build(); 有这个答案 ,说使用Firefox的configuration文件,但没有暴露。 没有driver.FirefoxProfile也没有一个暴露在全球范围内, webdriver.FirefoxProfile也没有driver.profiles等 我试过谷歌search,看源和文档,但没有什么关于此。

在docker容器中运行nodeJS应用程序,selenium和webdriver.iotesting

我正在尝试使用我的节点应用程序进行一些webdriver.iotesting,这是一个泊坞窗图像。 所以我到目前为止做的是: 1)通过在我的ubuntu服务器上运行这个来获取selenium服务器: $ docker run -p 4444:4444 selenium/standalone-chrome 这给了我运行的容器'ubuntu_selenium_1'( $ docker ps docker $ docker ps ) 2)构build节点应用程序docker image,在后台运行节点应用程序,并运行e2e.jstesting文件 在我的gitlab-ci.yml中,我正在做 – docker build -t core:test -f Dockerfile.testing . – docker run –rm core:test 这不会给我任何输出。 没有预期的标题和错误消息。 那么我做错了什么? 有一个正在运行的selenium服务器,有后台加载的节点应用程序,启动e2e.jstesting文件。 我错过了nodeJS应用程序,webdriver和selenium的连接… Dockerfile.testing FROM core:latest # Copy the test files COPY docker-entrypoint.sh / COPY e2e.js / # Get […]

在节点javascript中使用selenium-webdriver执行“命令”

我有兴趣通过JavaScript API https://code.google.com/p/selenium/source/browse/javascript/webdriver/command.js执行一些高级“命令” 如果我从基本代码开始: var browser = new webdriver .Builder() .usingServer(server.address()) .withCapabilities(webdriver.Capabilities.phantomjs()) .build(); 我尝试执行的每种“可能”语法都失败了。 例如: // does not work console.log(webdriver.Command('getWindowSize')) // does not work console.log(browser.Command('getWindowSize')) 有谁知道如何执行“获取窗口大小”,或“设置窗口大小”在selenium JavaScript的WebDriver?

使用BrowserMobProxyconfigurationWebDriverIO

有没有人有一个正确的例子如何configurationWebDriverIO BrowserMobProxy ? 这是我可以捕捉networkingstream量。 我以前曾经使用过WebDriverJS ,而WebDriverJS本质上是WebDriverIO的弃用版本。

select嵌套的iframe – selenium / javascript / node-js

我想用node-js中的selenium webdriver模块在iframe中select一个嵌套的iframe。 例如: <iframe id="firstframe"> <div id="firstdiv"></div> <iframe id="secondframe"> <div id="seconddiv"></div> </iframe> </iframe> 对于node-js部分: driver.switchTo().defaultContent(); driver.switchTo().frame("firstframe"); // –> works driver.switchTo().frame("secondframe"); // –> NoSuchFrameError iframes = driver.findElements(webdriver.By.tagName('iframe')).then(function(elements){ console.log(elements.length); // –> if I put this code before the switch to first frame output: 1, if I put it after output: 0) }); 我尝试使用索引号,但这也失败了。 编辑: 好吧,我想通了,但我的答案由于某种原因被用户@casparOne删除。 如果有人仍然想知道这里的问题是什么: 我的代码上面的作品,只是不在本地。 […]

扩展seleniumwebdriver js

前言 我试图写一些selenium-webdriver的扩展,如下所示: var webdriver = require('selenium-webdriver'); var fs = require('fs'); var resumer = require('resumer'); webdriver.WebDriver.prototype.saveScreenshot = function(filename) { return this.takeScreenshot().then(function(data) { fs.writeFile(filename, data.replace(/^data:image\/png;base64,/,''), 'base64', function(err) { if(err) throw err; }); }); }; webdriver.WebDriver.prototype.streamScreenshot = function() { var stream = resumer(); this.takeScreenshot().then(function(data) { stream.queue(new Buffer(data.replace(/^data:image\/png;base64,/,''), 'base64')).end(); }); return stream; }; module.exports = webdriver; 然后我只包括我的扩展webdriver,而不是官方的: var webdriver […]

使用Node.js无头浏览器与selenium混合?

我很想知道有没有人尝试过使用像zombie.js(任何其他替代方法)的node.js无头浏览器包和用于testingWeb应用程序的selenium浏览器。 我被node.js无头浏览器包所吸引,因为它比通过selenium驱动一个完整的浏览器更轻更快。 然而,没有一个无头浏览器节点包似乎支持JavaScript的HTML页面的精确呈现。 那么结合两全其美的呢? 恢复使用selenium来呈现zombie.js无法呈现的页面? 你如何去完成后者? 你需要知道什么时候页面没有在zombie.js上成功渲染,然后在selenium浏览器上激发页面。 但是,这不会造成等待selenium启动的滞后吗? 更重要的是,除了zombie.js,什么是最好的无头浏览器node.js包? 重点应放在页面渲染上。 你认为我们将来会看到一个node.js的无头浏览器包装代替selenium吗?