Tag: selenium

一旦元素存在,如何运行seleniumwebdriver代码

我在过去一个月看过的所有东西都已经过时了。 这是我的问题,我浏览了一个网站上的5个不同的页面,然后才得到所需的数据。 我不能发射一个driver.get ,因为所有5个不同页面的url保持不变。 由于Node.js是asynchronous的,因此它在元素出现之前运行代码。 我意识到我可以使用超时,但我运行这个代码100的时间,所以超时将无法正常工作。 每个人都在网上说要做到这一点,但它已经过时,并不起作用: driver.findElement(By.css('#gridsortlink')).then(function(webElement) { webElement.isElementPresent(By.css('#gridsortlink')) .then(function(found) { console.log(found); }); }); 如果你确实知道如何做到这一点,那就好了,因为我一直在寻找一个月的解决scheme。

Json在量angular器中的断言

我正在尝试在量angular器代码中执行JSON断言。 我为请求生成一个id,并为该id获取一些JSON数据。 我需要检查使用量angular器,错误types是10 (jsonData [0] .properties.errror)我已经在方法中包含一个expect语句获取jsondata未定义的错误。 我的量angular器代码如下所示: var obj=require('./../../bin/clientrest-wikvaya.js'); var UI = require('./../ui.js'); var co = require('co'); var ui = new UI (); describe("MapFeedback: road-missing", function () { ui.setSmallScreenSize(); // ui.testLogger(100); it('test', co.wrap(function*() { yield browser.get(ui.createStartLink()); yield ui.REPORT_ROAD.click(); expect(browser.getCurrentUrl()).toContain("report_road"); yield ui.ROAD_NEW.click(); expect(browser.getCurrentUrl()).toContain("choose_location_road_new/road_new"); yield ui.zoomIn (16.5); yield element(By.css('button[ng-click="doneChooseLocation(newLocation);"]')).click(); expect(browser.getCurrentUrl()).toContain("road_new"); yield ui.ROAD_NAME.sendKeys('TEST'); yield ui.HIGHWAY_OPTION.click(); yield ui.SUBMIT.click(); expect(browser.getCurrentUrl()).toContain("submit"); […]

seleniumChromedriver:无法创build频道

我在过去的几周里一直在使用Selenium Chromedriver,突然间我发现了这个奇怪的错误。 我不知道突然发生了什么变化。 [2560:6100:1025/082057:ERROR:browser_gpu_channel_host_factory.cc(125)] Failed to create channel. [ERROR] Unhandled exception occured. SessionNotCreatedError: session not created exception from unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData":{"frameId":"9556.1","isDefault":true},"id":1,"name":"","origin":"://"} (Session info: chrome=54.0.2840.71) (Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b),platform=Windows NT 10.0.14393 x86_64) 我用Node.js运行chromedriver: var selenium = require("selenium-webdriver/chrome"), options = new selenium.Options(), service = new selenium.ServiceBuilder().build(); options.addArguments(["–disable-web-security", "-incognito"]); var driver = new selenium.Driver(options, […]

selenium:导航到页面之前显示的ManagedPromise :: 32 {]:“pending”}消息

我尝试了以下selenium-webdriverJS代码: var webdriver = require('selenium-webdriver'); var browser = new webdriver.Builder().usingServer().withCapabilities({'browserName': 'chrome' }).build(); browser.get('http://localhost:1091/WebTours/sample.html'); var btn = browser.findElement(webdriver.By.id('show-coordinates')); browser.sleep(3000); var ids = btn.getAttribute("id"); console.log("attributes: " + ids); //expecting to run after above lines. browser.quit(); 预期:导航到给定的URL,find元素,然后打印属性id ,如下所示: attributes: show-coordinates 实际:在导航到URL本身之前,打印attributes:以下消息: attributes: ManagedPromise::32 {[[PromiseStatus]]: "pending"} 环境: Windows 7 – 64 bit selenium-webdriver (installed using `npm install selenium-webdriver`) ChromeDriver […]

运行没有terminal的守夜,通过我的应用程序?

我正在做夜classtesting,但所有这些都是通过terminal执行的,我想知道是否可以通过我的应用程序执行任务,而无需使用终止,即在应用程序内,然后单击button,执行与守夜完成的任务。 这个有可能?

如何在webdriver.io中以32位模式启动IE

我正在使用gulp-wdio npm pakage在selenium独立上运行WebDriver.iotesting 我运行的代码是: gulp.task('e2e', function () { return gulp.src('wdio.conf.js') .pipe(wdio({ wdio: { specs: './test/features/**/*.feature' } })); }); 而我的wdio.conf.js这样定义浏览器: capabilities: [ { browserName: 'internet explorer', version: 'ANY' } ], 如何打字很慢 ,我在互联网上发现运行32位版本的networking驱动程序解决了这个问题,我怎么也找不到如何configurationfunction或其他地方来运行IE32位驱动程序默认情况下…任何帮助将不胜感激@ 🙂

seleniumwebdriver:如何显示控制台中的值(Javascript)

我正在使用selenium webdriver node.js(javascript)有没有什么办法在testing运行时控制台输出一些值 。 就像是 : console.log(variable) 而是在testing的控制台中运行。 build议?

selenium – 与类匹配的元素数

我有以下testing代码: it('count elements by class', async t => { let count = await driver.findElements(By.css('my-questions-class')).then(v => v.length); assert.equal(count, 3); // count is 0, but I expect 3 }); 在我的HTML中,显然有一些匹配的元素: <div class="panel panel-default my-questions-class"> 有没有一个很好的理由,为什么Selenium代码不应该拿起这些HTML元素? 我也试过这个select器: By.css('div[class=\'my-questions-class\']') 没有人拿起页面上的任何元素。 但我可以从观察中发现,它正在加载正确的页面,所以不知道这里发生了什么。

使用Selenium和NodeJS从onclickbutton下载文件

所以,我试图下载一个文件到一个特定的目录,同时使用Selenium和nodeJS来触发下载。 这里是我必须点击button本身的代码: const chai = require('chai'); const expect = require('chai').expect; const assert = require('chai').assert; var webdriver = require('selenium-webdriver'), By = webdriver.By, until = webdriver.until; var driver = new webdriver.Builder() .forBrowser('chrome') .add_argument("") .build(); driver.get(url); driver.sleep(2000).then(function() { driver.getTitle().then(function(title) { expect(title).to.equal(title); }); }); driver.sleep(2000).then(function() { driver.executeScript('window.scrollTo(0,10000);'); driver.sleep(300); driver.findElement(By.className('button col-md-2 download-button')).click(); }) 我的问题是,Selenium和networking驱动程序似乎下载到一个未知的/无法访问的位置。 如果有人知道如何解决这个问题,如果将不胜感激。 Chrome Driver Version = 2.32.498537 […]

我怎样才能改变PhantomJS的屏幕分辨率?

无论如何,我无法find关于屏幕制裁改变的问题。 总是会有1024×768 。 更改viewportSize本身不会改变屏幕分辨率。 我检查了这里的决议: 链接 这是为节点: var WebPage = require('webpage'); page = WebPage.create() page.onInitialized = function () { page.evaluate(function () { window.screen = {width: 1600, height: 900, availWidth: 1600, availHeight: 900}; }); }; page.open('http://browserspy.dk/screen.php'); page.onLoadFinished = function () { page.render('ScreenShot' + '.png'); phantom.exit(); } 任何人都可以重新为Python?