Tag: selenium webdriver

这是一个承诺错误? 提交成功login后,Selenium-webdrivertesting无法find元素

我已经写了下面的testing,使用seleniumwebdriver。 (摩卡和柴也有一些设置,但是我还没有开始工作。) 我的问题是,testing运行到我希望它等待页面加载的位置,并findID为“usergreeting”的元素,其中包含文本“Welcome”+用户名。 此时,testing会抛出错误: Uncaught NoSuchElementError: Unable to locate element: {"method":"id","selector":"usergreeting"} Command duration or timeout: 986 milliseconds 不过,我可以看到(看着Firefox浏览器的步骤)页面已经加载并显示'#usergreeting'元素。 我不知道我做错了什么,但是我显然做错了。 我可能没有把握整个承诺的概念。 (请参阅我写了driver.wait()语句的部分。) 谢谢你的帮助。 var assert = require('assert'), fs = require('fs'), webdriver = require('selenium-webdriver'); require('mocha-as-promised')(); var chai = require('chai'); var chaiAsPromised = require('chai-as-promised'); chai.use(chaiAsPromised); chai.should(); describe('Login test', function() { var driver, configObj, username, pwd; this.timeout(6000); before(function(done) { […]

点击通过node.js和webdriver的随机链接

我有一些不同的产品页面,应该随机select其中之一。 我已经做了JavaScript的testing,但尝试使用node.js和selenium写它时有问题。 在我的testing页上,我得到了下一个结构 <div class="products"> <table width="600" cellspacing="6"> <tbody> <tr> <td> <a href="phones-59.php"></a> </td> <td>… </td> </tr> <tr>…</tr> … 所以下一个例子是在JavaScript上工作​​,我得到了我需要的所有链接 links = document.getElementById('products').getElementsByTagName('a'); 然后我使用随机select一些链接,像这样(例如在这里select一个链接随机 ) randomlink = Math.round(Math.random() * (links.length+1)); links[randomlink].click(); 没有什么特别的,但是当我在node.js中尝试过这样的技巧时,我无法访问链接。 尝试使用click()和其他函数时出现错误 driver.findElement(webdriver.By.id('products')).findElements(webdriver.By.tagName('a')); 那么如何在我的“产品”块中点击随机链接呢? 谢谢 PS我已经复制了“独特的select器”从Firefox开发者控制台,但不知道如何以正确的方式使用它(我已经尝试使用XPath没有成功) "products > table:nth-child(1) > tbody:nth-child(1)" 更新我也试过这样的build设,并得到正确的链接数量,但无法访问它们 ll = driver.findElement(webdriver.By.id('products')); lk = ll.findElements(webdriver.By.tagName('a')).then(function(txt) { logger.info("lk length: " + txt.length); […]

做一些事后描述与量angular器与selenium服务器与angularjs

我想在每次描述之后(而不是在每个testing用例之后)做一些事情,在每次描述之前,有没有办法做到这一点? 我已经尝试过下面的格式,但它给了我错误,之前和之后没有定义,是否有可能做一些任务之前和之后的每个描述: describe('testcase', function () { before(function () { ————– }) beforeEach(function () { —————– }) afterEach(function () { ————– }) after(function () { —————– }) it('task1', function () { ———– })it('task2', function () { —————— }) })

我怎么能从另一个JS通过Protractor JS调用外部JS?

我使用Jasmine作为我的JS框架到我的自动testing脚本。 我想从另一个testing脚本调用另一个JS文件。 就像是: describe('call JS Testing', function() { var exScripts = function(script){ exScripts.src = 'c:\\automation\\tests\\'; }; it('call to script', function() { exScripts('onboarding.js'); }); }); 是否有可能做到这一点,而不依赖于JQuery / Ajax? 谢谢。

Internet Explorer11使用量angular器工作速度太慢

我需要使用量angular器在Internet Explorer 11中运行我的testing用例。当我执行testing用例时,与Firefox和Chrome相比,它会消耗大量时间。 即使在文本框中input“Hello”文本,大约需要20秒。 有无论如何提高Internet Explorer 11的执行速度? 以下是我的量angular器细节: selenium独立服务器-2.47.1 节点JS-0.12.7 IE driverversion-IEDriverServer_x64_2.45.0 如果我们有提高速度的话,请提供详情和链接。 非常感谢。

selenium – 点击一个button,直到出现一些元素

我正在尝试点击Yopmail网站上的“ Check for new emailsbutton,直到收到邮件(因为收件箱一开始是空的)。 我正在使用Selenium的NodeJS实现,使用Mocha运行我的testing。 下面是我正在尝试点击,直到元素出现: driver.get('http://yopmail.com'); driver.wait(until.elementLocated(By.css('#f .sbut'))); driver.findElement(By.name('login')).sendKeys(name); driver.findElement(By.css('#f .sbut')).sendKeys(Key.ENTER); driver.wait(until.elementLocated(By.id('ifinbox')));// Switching iframe driver.switchTo().frame("ifinbox"); bool = driver.isElementPresent("m1"); while (!bool) { driver.switchTo().defaultContent(); driver.findElement(By.id("lrefr")).click(); driver.sleep(500);// 500ms driver.switchTo().frame("ifinbox"); bool = driver.isElementPresent("m1"); } ligne bool = driver.isElementPresent("m1"); 失败,并显示以下错误消息: Error: the error {} was thrown, throw an Error 🙂 at Array.forEach (native) 我想我不能build立一个承诺的while循环…也许…但是,我真的不明白为什么它会失败,以及如何正确地写这个while循环。 任何build议是最受欢迎的!

从cmd和npm运行脚本运行量angular器的差异结果

运行此命令时,量angular器工作正常: $ protractor app/tests/e2e/conf.js 当我把这个命令放到package.json文件中时,为了使npm执行命令,量angular器不工作。 // package.json … "scripts": { "test": "protractor app/tests/e2e/conf.js" } 运行: $ npm run test 结果: 浏览器 安慰 为什么不给出相同的结果? 它只是冻结/挂起'数据' 文本在地址栏中。

我如何使用nodejs selenium webdriver设置elementScrollBehaviorfunction

我创build驱动程序如下: driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.firefox()).build(); 我如何设置elementScrollBehavior ?

types错误By.css(tagName)

我似乎无法弄清楚是什么导致typeError或为什么。 基本上所有我想要做的是获得当前选定的框架的名称。 下面是代码和错误。 this.getCurrentFrameName = function(driver) { var frames = driver.findElements(driver.By.css('frame')); for (var frame in frames) { if (frame.isSelected()) { return frame.getName; } } }; 错误 TypeError: Cannot read property 'css' of undefined at getCurrentFrameName (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\src\FrameHandler.js:21:75) at Context.<anonymous> (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\test\FrameHandlerTest.js:17:29) at callFn (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runnable.js:315:21) at Test.Runnable.run (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runnable.js:308:7) at Runner.runTest (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runner.js:422:10) at C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runner.js:533:12 at next (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runner.js:342:14) at C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runner.js:352:7 […]

我怎样才能在node.js selenium-webdriver中模拟右键单击?

我使用的是nodejs的selenium-webdriver 。 我怎样才能模仿这个驱动程序的右键单击? 我在官方文档中找不到这个。