Articles of selenium 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() […]

在多个浏览器上运行testing(按顺序)

我目前只使用Chrome(驱动程序)进行testing。 我想用Firefox和Safari来testing它。 一个接一个,不能并行。 这是我开始testing的重要任务: gulp.task('test', function() { return gulp.src('*test/features/*').pipe(cucumber({ 'steps': '*test/features/steps/*.js' })); }); 一个简单的function文件: Feature: UI Testing UI Scenario: Check the title of the page When I open the homepage Then I should see "Test – IntApp" in the title 和步骤文件: const chrome = require('selenium-webdriver/chrome'); const webdriver = require('selenium-webdriver'); const assert = require('assert'); module.exports = […]

Selenium-Webdriver NodeJS相当于Java代码的DesiredCapabilities

我已经在selenium-webdriver位于这里( http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_Capabilities.html )search文档(这里没有什么) 我找不到从Java到NodeJS的等效代码。 这里是JAVA中的代码(我从这里复制testingconfiguration选项部分, https://github.com/zalando/zalenium/blob/master/docs/usage_examples.md#initial-setup ) DesiredCapabilities desiredCapabilities = new DesiredCapabilities(); desiredCapabilities.setCapability(CapabilityType.BROWSER_NAME, BrowserType.FIREFOX); desiredCapabilities.setCapability(CapabilityType.PLATFORM, Platform.LINUX); desiredCapabilities.setCapability("name", "myTestName"); 特别是我想设置能力“名称”,所以我可以用Zalenium命名我的testing。 我如何在NodeJS中做到这一点? 这是我目前的selnium webdriver代码,它的工作(和编辑删除敏感信息),但不设置testing名称。 我试过这个.withCapabilities(webdriver.Capabilities.chrome(),{“name”,“chrometest”}),它编译,但我不认为它做什么? //Run using this project (https://github.com/qmu/dockerfiles/blob/master/src/selenium-webdriver-node/example/bin/run) "use strict"; const webdriver = require('selenium-webdriver'), By = webdriver.By, until = webdriver.until, test = require('selenium-webdriver/testing'); //const expect = require('expect.js'); const assert = require('assert'); var driver = new […]

如何select最佳自动化与selenium工具组合

这可能是基于意见的问题,但我真的很困惑select自动化工具组合。 到目前为止,我一直在使用Selenium webdriver,maven和Java来构build自动化框架。 这似乎完全正常工作。 现在有一天我觉得很多自动化工程师WebdriverJS使用WebdriverJS , WebdriverIO , WebdriverIO等等。 有人告诉我,如果使用WebdriverJS / WebdriverIO / WebdriverJS构build自动化框架,那么执行速度将比Java快。 我知道我应该根据自己的需求来select工具,但是同时我觉得我们不能在某些网站中使用WebdriverJS / WebdriverIO / WebdriverIO在这种网站中所有的元素都必须被xpath为dynamic改变class / id大多数元素。 所以,如果任何人都可以给我提示哪些工具select哪种网站,那么这将是非常有帮助的。 即对于AngularJS网站Node.Js对于selenium自动化Node.Js是很好的。

BrowserStack – Node.js并发testing

我一直在研究如何使用BrowserStack专门为Node.js中的可伸缩testing创build一个合理的结构。 请在这里查看源代码: https://gist.github.com/Palgie/10886008 试图closures会话或退出驱动程序时遇到问题,因此在运行并发testing时,它会经常告诉我,我的最大会话正在使用中(请参阅下文)。 这感觉就像一个竞赛条件,但它可能是一件非常明显的事情。 Now testing Chrome – 22.0 Now testing IE – 10.0 ․․․․ Stopping test Stopping test ․ 4 passing (14s) 1 failing 1) "after all" hook: Error: This driver instance does not have a valid session ID (did you call WebDriver.quit()?) and may no longer be used. at checkHasNotQuit (/Users/gourleyp/Sites/bs-webdriver/node_modules/browserstack-webdriver/lib/webdriver/webdriver.js:291:13) at […]

asynchronous运行多个selenium webdriver实例(firefox)

我怎样才能让我的webdriver同时请求多个页面(或打开多个浏览器)? 我在互联网上find的所有解决scheme等待,直到前一届会议完成加载,然后才打开浏览器的新实例。 我已经尝试过selenium-webdriver,webdriverjs和wdjs,它们都不能asynchronous执行多个不同页面的http请求。 即使这样的解决schemehttps://github.com/OniOni/wd-parallel-async不会工作。 他们都在时间打开一个。 我错过了什么吗? PS:我不想同时运行多个浏览器! 我想运行同一浏览器的多个实例。

来自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。 我从例子中学到了很多东西 ,所以我在这里有点失意。

为什么量angular器立即运行每一行代码?

为什么量angular器立即运行每一行代码? 所以我有一个不是写在angular度的网页。 我需要基于selenium的自动化。 我用seleniumwebdriver-js代码来打它。 下面的例子。 一旦你login,你会被带到一个有3个问题的页面。 每次login时问题的顺序都是随机的。 因此,每次login时,您都可能不会以相同的顺序得到相同的问题。 问题1)你叫什么名字? 问题2)现在几点了? 问题3)你在这里? 每个问题的答案都是问题的最后一个字。 答案1)名称 答案2)它 答案3)在这里 所以我想一个简单的方法来解决这个问题是创build一个if条件语句 var foo = browser.driver.findElement(By.id('question1')).getText(); if(foo == What is your name?) { browser.driver.findElement(By.id('answer1')).sendKeys('name'); } else { blah } 等等…等等… 但是我遇到的问题是,在它到达那个点之前,Protractor立即运行if语句。 在下面的示例中,控制台会立即打印出控制台日志“this sucks”,因为它会立即运行if语句,而不会经过第一步到达页面然后检查。 this.foo_test = function() { console.log('starting foo test'); browser.driver.get('http://my-test-url.com/'); browser.sleep(3000); browser.driver.findElement(By.id('login')).click(); browser.sleep(3000); browser.driver.findElement(By.id('user')).sendKeys('user'); browser.driver.findElement(By.id('login_button')).click(); browser.sleep(3000); console.log('getting variable'); var foo […]

元素在点(1254,21)不可点击。 其他元素将获得点击

我正在使用angularJS量angular器和selenium服务器进行UItesting, 这是我的TestCase: it('Click on Top Headings one by one', function () { //click on Top Heading one by one ptor.element.all(by.repeater('application in workbenchOptions.applications')).then(function (arrs) { ptor.sleep(3000); arrs[2].click(); ptor.sleep(3000); arrs[3].click(); ptor.sleep(3000); arrs[1].click(); ptor.sleep(3000); arrs[2].click(); ptor.sleep(3000); arrs[0].click(); ptor.sleep(2000); }); }); 这是我的用户界面,我试图单击每个标题 首先我点击arrs[2]即arrs[2] Test Case 然后我点击arrs[3] , arrs[1] , arrs[2] , arrs[0] ,一切都点击,但如果在开始时假设arrs[0]已经打开,那么我不能点击这又一次,我得到了一个错误消息 UnknownError: unknown error: Element is not […]

即使在Nightwatchjs中testing失败,Browserstack也能报告成功

我刚开始使用带有浏览器的nightwatch,我注意到当我们得到一个失败的testing时,nightwatchlogging失败,但是browserstack没有。 我正在使用的样本testing 。 另外我正在使用BrowserStack的免费试用版。 我的问题是: testing运行失败时,有什么想法可以告诉浏览器吗? 从BrowserStack 文档 : REST API 可以使用以下代码片段将testing标记为合格或不合格: var request = require("request"); request({uri:"https://user:key@www.browserstack.com/automate/sessions/<session-id>.json", method:"PUT", form:{"status":"completed","reason":""}}) 状态的两个潜在值可以完成或错误。 或者,也可以传递一个原因。 我的问题是: 如何在testing执行后获得'session-id'? 如果我可以在仪表板中看到“已完成”状态,该怎么办?