Tag: selenium

Selenium + Firefox:我怎样才能同时使用Firefox二进制规范和Firebug扩展?

目前我正在使用下面的代码。 var co = require('co'); var WebDriver = require('selenium-webdriver'); var SeleniumServer = require('selenium-webdriver/remote').SeleniumServer; co(function *() { // async var server = new SeleniumServer('/path/to/selenium', { port: 4444, jvmArgs: ['-Dwebdriver.firefox.bin=path/to/firefox'] // Firefox binary specification }); yield server.start(); // await var driver = new WebDriver .Builder() .usingServer(server.address()) .withCapabilities(WebDriver.Capabilities.firefox()) .build(); }); 现在我需要添加Firebug扩展来提取networkingstream量为*.har文件。 我googlesearch到这个 : var firefox = require('selenium-webdriver/firefox'); var […]

不能点击一个divbuttonseleniumwebdriver

var webdriver = require('selenium-webdriver'); var driver = new webdriver.Builder(). withCapabilities(webdriver.Capabilities.chrome()). build(); driver.get('https://www.tumblr.com/login'); driver.findElement(webdriver.By.id('signup_email')).sendKeys('my_username'); driver.findElement(webdriver.By.id('signup_password')).sendKeys('my_password'); driver.findElement(webdriver.By.id('signup_forms_submit')).click(); driver.wait(function(){ driver.get('https://www.tumblr.com/search/love+gifs'); },5000); driver.wait(function(){ driver.findElement(webdriver.By.id("post_control like")).click(); },1000); driver.wait(function(){ driver.findElement(webdriver.By.id("follow-text")).click(); },1000); driver.quit(); <div class="post-info-post-tumblelog"> <div class="post-info-tumblelog"> <a class="follow_link worded-follow-button show-unfollow" data-subview="follow" href="/follow/pleasingpics" style="width: 41px;"> <div class="follow-text" title="Follow">Follow</div> <div class="unfollow-text" title="Unfollow">Unfollow</div> </a> </div> </div> 我有一个Javascript代码,用于使用Selenium WebDriver在Tumblr上关注一些帐户。 在HTML代码中,有一个关注button,您可以在名为“follow-text”的类中看到。 但我的代码不起作用,我也想知道buttonbutton实际上不是一个button,但他们已经使它成为一个可点击的div类。 我不太熟悉HTML / CSS,而且我是新的Javascript和Selenium Webdriver。 […]

在量angular器中为e2etesting设置https代理

我想在使用Protractor的e2etesting期间将networking请求存储到第三方服务,同时保持浏览器和我的api之间的通信。 此外,我想能够保留一些特定的电话给我的API,同时保持其他电话不变。 我正在testing的应用程序被集成到Docker容器中。 e2etesting在Firefox中运行在一个容器中,而API服务器在另一个容器中运行。 所以我想要做的是build立一个代理节点服务器的容器(让我们调用这个容器proxy )。 我希望来自浏览器的所有networkingstream量都能通过代理服务器,其中一部分stream量可以根据需要进行存储。 这几乎工作。 但是,我观察到只有httpstream量通过代理传递,而httpsstream量转义代理。 我不知道为什么这可能会发生。 这里是量angular器configuration的相关部分: exports.config = { … capabilities: { 'browserName': 'firefox', 'proxy': { 'proxyType': 'manual', 'httpProxy': 'proxy:3000', 'sslProxy': 'proxy:3000' } }, … } 我尝试了sslProxy和httpsProxy选项,就像我在各种在线讨论中看到的一样,但是没有人帮助通过我的代理直接https请求。 例如,我在页面上添加了两个图片 – 一个是通过http提供的Google徽标,另一个是通过https提供的。 我可以在proxy泊坞窗日志中看到,通过http提供的图像请求通过代理服务器传递,但通过https提供的图像请求不通过。 所以我的问题是,我有什么明显的错误吗? 你能否build议是否可以通过代理服务器来指导浏览器的https请求?

运行cucumberjs ft。selenium,phantomjs,webdriverio时出错

我已经在全球安装了phantomjs npm install -g phantomjs 用java -jar selenium-standalone-2.52.0.jar启动selenium 像这样正确configurationcucumber的World对象: var options = { //desiredCapabilities: { browserName: 'internet explorer' }, // WORK //desiredCapabilities: { browserName: 'chrome' }, // WORK desiredCapabilities: { browserName: 'phantomjs' }, // NOT WORK waitforTimeout : 2000, host: '127.0.0.1', port: 4444 }; this.browser = webdriverio.remote(options); 它与Chrome&IE一起工作,但幻灯片失败。 这是我从Selenium控制台得到的错误: 错误 – org.apache.commons.exec.ExecuteException:执行失败(退出值:-559038737。由java.io.IOException引起:无法运行程序“C:\ Program Files(x86)\ nodejs […]

Selenium NodeJS将cookies打印到控制台

我为Node.JS使用了selenium-webdriver npm模块,但是我在写cookies到控制台时遇到了麻烦。 我使用了NPM页面的示例代码(在使用中) var webdriver = require('selenium-webdriver'), By = webdriver.By, until = webdriver.until; var driver = new webdriver.Builder() .forBrowser('firefox') .build(); driver.get('http://www.google.com/ncr'); driver.findElement(By.name('q')).sendKeys('webdriver'); driver.findElement(By.name('btnG')).click(); driver.wait(until.titleIs('webdriver – Google Search'), 1000); console.log(driver.manage().getCookies()); driver.quit(); 现在,我希望console.log写我已经看到在其他问题引用的字典,但是我得到以下输出: ManagedPromise { flow_: ControlFlow { propagateUnhandledRejections_: true, activeQueue_: TaskQueue { name_: 'TaskQueue::5', flow_: [Circular], tasks_: [Object], interrupts_: null, pending_: null, state_: 'new', unhandledRejections_: Set […]

是否内置select器选项以使用nightwatchjs进行复杂的决策?

使用名为NightWatch的JavaScript Selenium工具,在应用testing之前确定GUI部分的好习惯是什么? 例如,如果在A或B上发现,然后进行单独的testing。 另一个例子,确定是否login,所以你不会保持login等。似乎当我使用if语句与select器,它想要失败,如果我得到else选项。 我已经使用Python API很长一段时间了,你可以访问所有的Python库,你可以使用Selenium Selectors进行validation,而不会导致错误等。我甚至使用npm Selenium API的结果类似,但仍然是绿色的到它如何工作,但我不能让NightWatch的层做其他事情,但不pipe我尝试什么,E2E通过或失败。 我想我会把它放在那里,所以我可以看到,如果我只是做错了,或者这是一个普遍的问题。 或者,也许还有其他库旨在帮助我正在寻找。 任何投入将不胜感激。 这里是一个Python中的通用示例,我可以用它来validationA / B选项的工作… # so you know what EC is from selenium.webdriver.support import expected_conditions as EC … try: wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#foo'))) driver.find_element_by_css_selector('#blah1 a').click() except: driver.find_element_by_css_selector('#blah2 a').click() 另一个可能更干净的方式来做它在Python中… if len(driver.find_elements_by_css_selector('#blah1 a')) > 0: driver.find_element_by_css_selector('#blah1 a').click() else: driver.find_element_by_css_selector('#blah2 a').click() 这里显然需要更多的逻辑,因为它没有夜间所有的内置插件,但是这应该让我知道我正在尝试做什么。

等待Selenium的JavaScript事件

我正在Selenium(Node.js)之上构build一个自动化框架,其中包含许多步骤。 每一步都跟上一个步骤,完成之后,返回一个承诺(像Selenium的driver.click()等)返回的承诺。 是否有可能等待JavaScript事件在浏览器上触发? 如果是这样,那么遵循的模式是什么?

元素不可点击Selenium webdriver

我有下面的代码,我不知道如何点击一个元素,而没有得到"Element is not clickable at point"错误消息。 在点击之前,您也可以看到我正在移动元素。 以下代码示例应该完全工作。 var webdriver = require('selenium-webdriver') , By = webdriver.By , until = webdriver.until; var driver = new webdriver.Builder().forBrowser('firefox').build(); driver.get('http://www.vapeworld.com/'); driver.manage().timeouts().implicitlyWait(10, 3000); for (i = 0; i < 5; i++) { try { driver.executeScript("try{jQuery('[name=\"" + i.toString() + "_name\"]')[1].click()}catch(Ex){};"); } catch (Ex) {} } driver.findElement(webdriver.By.id('search')).sendKeys('pax 2'); //to enter text driver.findElement(webdriver.By.className('button […]

WebDriver NodeJS实例化具有function的IE驱动程序:引入FlameinessByIgnoringProtectedModeSettings(ignoreSettings)

我尝试使用IEfunction实例化驱动程序会话来忽略Internet Explorer中的保护模式设置,但我不确定语法。 我努力了: var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.ie().introduceFlakinessByIgnoringProtectedModeSettings(true).build(); var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.ie().introduceFlakinessByIgnoringProtectedModeSettings, true.build(); var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.ie().ignoreProtectedModeSettings(true).build(); var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.ie().introduceFlakinessByIgnoringProtectedModeSettings(true).build(); var driver = new webdriver.Builder().withCapabilities({ "browserName": "ie" }, {"ignoreProtectedModeSettings": "true"}).build(); var driver = new webdriver.Builder().withCapabilities({ "browserName": "ie" }, {"introduceFlakinessByIgnoringProtectedModeSettings": "true"}).build(); 到目前为止没有任何工作。 什么是正确的这个在JavaScript中的联合? 谢谢!!!

基本testing在夜视phantomjs浏览器上失败

我正在使用selenium服务器,node.js和phantomjsselenium的夜间守夜。 我使用phantomjs只是为了无头浏览器(当它运行testing时selenium并不打开浏览器)。 当我使用firefox作为浏览器时,我的基本testing通过,但是当我使用phantomjs浏览器时失败。 我设置基本的谷歌testing: module.exports = { 'Demo test Google' : function (browser) { browser .url('http://www.google.com') .waitForElementVisible('body', 1000) .setValue('input[type=text]', 'nightwatch') .waitForElementVisible('button[name=btnG]', 1000) .click('button[name=btnG]') .pause(1000) .assert.containsText('#main', 'Night Watch') .end(); } }; 并设置phantomjs服务器。 这是我的nightwatch.json: { "src_folders" : ["tests"], "output_folder" : "reports", "custom_commands_path" : "", "custom_assertions_path" : "", "page_objects_path" : "", "globals_path" : "", "selenium" : { "start_process" […]