Tag: selenium webdriver

我可以让量angular器使用安装在node_modules中的IEDriverServer.exe webdriver-update吗?

我正在为我的angular度web应用程序项目写验收testing。 他们通过量angular器运行,并在铬上工作得很好。 但是,当我尝试在Internet Explorer 11上运行它们时,我得到一个失败,抱怨:“驱动程序可执行文件的path必须由webdriver.ie.driver系统propery设置”。 但是,我有我的项目configuration为下载IE驱动程序与chromedriver可执行文件相同的地方。 虽然我确定可以将IE驱动程序改变为存储在我的PATH envvariables中的文件夹,但是项目中的每个开发人员都必须执行相同的操作,或更新其PATH指向驱动程序。 我的问题是 – 是否有一个简单的configuration,我错过了使这个IE驱动程序可用于量angular器就像Chrome的驱动程序是? 我的package.json: { //… "scripts": { "webdriver-update": "webdriver-manager update –ie", "preacceptance-tests": "npm run webdriver:update — –standalone", "acceptance-tests": "protractor", //… } 我的protractor.conf.js: exports.config = { baseUrl: 'http://localhost:3000/', specs: [ 'src/**/**test.ts', 'src/**/*test.ts' ], capabilities: { 'browserName': 'internet explorer' //If I put chrome here, the tests pass }, […]

networking驱动程序的示例不起作用

我npm安装了selenium-webdriver 。 下载IE组件,并把它放在我的path(使用Windows 8)。 打开IE浏览器并将所有安全区域设置为高,他们需要相同,但由于“受限制的网站”不允许我将其设置为高但我必须将所有其他更改为高。 然后运行\ node_modules \ selenium-webdriver \ example \ google_search.js的修改版本: var webdriver = require('..'), By = webdriver.By, until = webdriver.until; var driver = new webdriver.Builder() .forBrowser('ie') .build(); driver.get('https://www.google.com/?gws_rd=ssl');//no redirect driver.findElement(By.name('q')).sendKeys('webdriver'); driver.findElement(By.name('btnG')).click(); driver.wait(until.titleIs('webdriver – Google Search'), 1000); driver.quit(); IE浏览器启动并打开谷歌,然后我得到以下错误: NoSuchElementError:找不到使用CSSselect器的元素== * [name =“q”] 我很确定元素是在“查看源代码”给我的页面上 <input class="lst lst-tbb sbibps" id="lst-ib" maxlength="2048" name="q" 这可能实际上是IE的问题,因为在google.com上document.body.querySelector("*[name=\"q\"]")在IE 11中返回未定义,但这将意味着不能使用seleniumIE浏览器。 […]

量angular器 – 如何在量angular器中设置默认的input语言

我想在我的conf文件中设置一个默认的打字语言。 当我在本地运行我的testing用例时,我无法在运行过程中切换键盘语言,因为它会改variablesangular器的键入语言以及testing失败。 请让我知道,如果你有任何解决scheme,谢谢。

如何创build一个selenium webdriver的实例,而无需在Node中构build浏览器?

我想创build一个webdriver(selenium)的实例,而不build立浏览器。 那是, var webdriver = require('selenium-webdriver'); var driver = new webdriver.Builder() .withCapabilities(webdriver.Capabilities.chrome()) .build(); 我不想build立浏览器,因为我想保持司机在一个共同的地方,如果我使用build立一个新的Chrome浏览器启动。 每次我打电话时,应用程序都会打开新的浏览器。 有没有可能做到这一点? 让我知道是否需要进一步的信息。 TIA

再次使用相同的实例webdriverJS

我对Selenium真的很陌生。 我设法使用下面的nodejs代码打开一个网站 var webdriver = require('selenium-webdriver'); var driver = new webdriver.Builder() .forBrowser('chrome') .build(); console.log(driver); driver.get('https://web.whatsapp.com'); //perform all other operations here. https://web.whatsapp.com打开,我手动扫描QR码和login。现在我有不同的JavaScript文件来执行操作,如删除,在web.whatsapp.com内清除聊天等… 现在,如果我得到一些错误,我debugging,当我使用node test.js再次运行脚本,需要另外2分钟来加载页面,并执行我需要的步骤。 我只是想重新打开已经打开的选项卡,并继续我的脚本,而不是新的窗口打开。 编辑第2天:仍在search解决scheme。 我试着下面的代码保存对象,并重用它..这是正确的方法? 虽然我得到一个JSONparsing错误。 var o = new chrome.Options(); o.addArguments("user-data-dir=/Users/vishnu/Library/Application Support/Google/Chrome/Profile 2"); o.addArguments("disable-infobars"); o.addArguments("–no-first-run"); var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).setChromeOptions(o).build(); var savefile = fs.writeFile('data.json', JSON.stringify(util.inspect(driver)) , 'utf-8'); var parsedJSON = require('./data.json'); console.log(parsedJSON);

用Selenium WebDriverJsclosures警报

我一直在努力尝试closures警报浏览器打开只有一个特定的模式,我不控制,所以我需要一段代码,检测并closures警报能够继续浏览网页,而不是停止执行。 我尝试了几种处理警报的方法,但目前没有一个成功: 以下是我一直在使用的一些示例: 1: driver.wait(driver.switchTo().activeElement().then( function() { console.log("alert detected"); driver.switchTo().alert().accept(); }, function() { console.log("no alert detected"); } ), 1000); 2: driver.wait(driver.switchTo().alert().accept() .then(null, function(err) { console.log("ERROR ALERT"); console.log(err); console.log("ERROR NAME"); console.log(err.name); }), 1000); 3:注入这段代码试图覆盖浏览器的警报,使其不显示: driver.executeScript('alert = function(){};'); 基本上这三个是我一直在努力的主要解决方法,但目前似乎没有任何工作正常。

使用Node.js上的Selenium Webdriver Chrome阅读控制台

我想在Node.js中使用Selenium Webdriver Chrome进入一个网页,填写一个input,单击一个button,然后检索浏览器控制台的内容。 我能够得到网页,填写input,然后单击button,但到目前为止我无法弄清楚如何检索控制台的内容。 我怎么做? 这是迄今为止的代码: const webdriver = require('selenium-webdriver'); const chromeDriver = require('selenium-webdriver/chrome'); const path = require('chromeDriver').path; const service = new chromeDriver.ServiceBuilder(path).build(); chromeDriver.setDefaultService(service); const { By, until } = webdriver; webdriver.promise.USE_PROMISE_MANAGER = false; const CHROME_BIN_PATH = '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome'; const options = new chromeDriver.Options(); options.setChromeBinaryPath(CHROME_BIN_PATH); options.addArguments( 'headless', 'disable-gpu', ); const main = async () […]

我可以/我怎么能将一个Selenium webdrivertesting脚本从node.js转换为phantomjs – ghostdriver?

我最近开始和Selenium一起工作,为了让生活更轻松,我开始使用节点来运行我的脚本,以便可以直观地监视testing。 我现在面临的挑战是将其转换为可以作为无头testing运行。 不幸的是,我所遇到的大部分资源只能用Java或Python使用phantomjs和ghostdriver。 我的老板要我通过没有Java或Python的phantomjs来运行testing。 最终,这些testing将通过不带GUI的服务器上的Linux VM远程运行。 目前,我正在使用Mac OS X 10.8进行testing,并且仍然有很多桥接以便达到我的目标。 我最重要的问题是,是否可以通过端口从phantomjs运行脚本而不使用Java或Python? 我花了好几个小时的时间仔细研究了我所能得到的资源,而且我没有find解决办法。 如果是这样,我该如何正确地初始化testing运行无头? 这是我如何编写我的functiontesting的开始。 我想正确地将function从firefox切换到phantomjs,并且能够使用合适的端口来运行它。 其余的testing导航到一个特定的网站,通过一个小部件login,然后进一步导航到该地区,我将build立进一步的testing,在我得到这个工作后操纵。 var webdriver = require('selenium-webdriver'), SeleniumServer = require('selenium-webdriver/remote').SeleniumServer; var server = new SeleniumServer("Path/selenium-server-standalone-2.39.0.jar", { port: 8910 }); server.start(); var driver = new webdriver.Builder(). usingServer(server.address()). withCapabilities(webdriver.Capabilities.firefox()). build(); testing工作完美,但我是新来的,所以我可以忽略一些愚蠢的东西。 请让我知道做了什么调整,以便通过幻影无法运行。 当我尝试使用节点运行脚本后切换functionphantomjs它产生的 "/Selenium/node_modules/selenium-webdriver/phantomjs.js:22 LogLevel = webdriver.logging.LevelName, ^ TypeError: Cannot read property 'LevelName' of […]

从chromedriver启动时修改标志

我使用webdriver( http://webdriver.io/ ),独立selenium,摩卡来写我的testing用例。 testing案例是特定于铬,所以我使用的是chromedriver。 在启动时,我想要禁用“touch-events”和“touch-optimized-ui”标志,否则我的testing用例将会失败。 每当chromedriver启动浏览器,它将从默认选项开始。 有谁能为我提供解决scheme吗? 什么可以添加到下面的代码来禁用这些标志? 或者也许有其他解决scheme? 示例代码: var webdriverjs = require('./webdriverjs/index'), assert = require('assert'); describe('my webdriverjs tests', function(){ this.timeout(99999999); var client = {}; before(function(done){ client = webdriverjs.remote({ desiredCapabilities: {browserName: 'chrome'} }); client.init(done); }); it('sample test',function(done) { client .url('http://localhost:3030/subset/index') .call(done) }); after(function(done) { client.end(done); }); });

如何findnode.js页面上的所有链接?

我现在在学习node.js(webdriver),并且不能理解一些问题。 我试图在互联网search,没有find任何我需要的任务的例子。 例如,我如何login来控制页面上的所有链接(例如bing.com)? 我不明白为什么这样简单的JavaScript结构 document.getElementsByTagName('a'); 在node.js中不起作用 如果我使用 findElement(webdriver.By.tagName('a')) 我在页面上只有第一个链接,为什么? 数组在nodejs中不可用? 如果不可能,应该使用哪个模块(例子)。 就目前来看,我的印象是,即使是一个简单的function需要额外的模块,因此我所有的第一步都失败了,因为我正在尝试做任何事情,像在JavaScript中。 谢谢