Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 夜表设定值方法不适用';行不通_Javascript_Testing_Nightwatch.js_E2e Testing - Fatal编程技术网

Javascript 夜表设定值方法不适用';行不通

Javascript 夜表设定值方法不适用';行不通,javascript,testing,nightwatch.js,e2e-testing,Javascript,Testing,Nightwatch.js,E2e Testing,我目前正试图建立一个夜视项目,看看是否有什么好处。我现在正在跟踪。教程中的内容很管用,但当我尝试对其稍加修改时,它就不再管用了。我看了一遍,但我想我还是遗漏了什么?我使用的代码粘贴在下面: var conf = require('../../nightwatch.conf.js'); module.exports = { 'Demo test' : function (browser) { browser .url('http://localhost/myWebsite

我目前正试图建立一个夜视项目,看看是否有什么好处。我现在正在跟踪。教程中的内容很管用,但当我尝试对其稍加修改时,它就不再管用了。我看了一遍,但我想我还是遗漏了什么?我使用的代码粘贴在下面:

var conf = require('../../nightwatch.conf.js');

module.exports = {
  'Demo test' : function (browser) {
    browser
      .url('http://localhost/myWebsite?newwindow=0')
      .waitForElementVisible('body', 6000)
      .setValue('input[name=txtLogin]', 'login')
      .setValue('input[name=txtPassword]', 'password')
      .waitForElementVisible('input.btnLogin', 2000)
      .click('button[id=btnLogin]')
      .pause(6000)
      .assert.elementPresent("#selectTitle")
      .assert.containsText('#selectTitle', 'schedules')
      .assert.urlContains('login/login_start.asp')
      .saveScreenshot(conf.imgpath(browser) + 'titleScreen.png')
      .end();

  }
};
cmd中的错误:

Running:  Demo test 
 √ Element <body> was visible after 41 milliseconds.
ERROR: Unable to locate element: "input[name=txtLogin]" using: css selector
at Object.Demo test (C:\Workspace\myWebsite\learn-nightwatch\test\e2e\My_Test.js:8:8)
at _combinedTickCallback (internal/process/next_tick.js:67:7)
ERROR: Unable to locate element: "input[name=txtPassword]" using: css selector
at Object.Demo test (C:\Workspace\myWebsite\learn-nightwatch\test\e2e\My_Test.js:9:8)
at _combinedTickCallback (internal/process/next_tick.js:67:7)
 × Timed out while waiting for element <input.btnLogin> to be present for 2000 milliseconds.  - expected "visible" but got: "not found"
at Object.Demo test (C:\Workspace\myWebsite\learn-nightwatch\test\e2e\My_Test.js:10:8)
at _combinedTickCallback (internal/process/next_tick.js:67:7)
运行:演示测试
√ 元素在41毫秒后可见。
错误:无法使用:css选择器定位元素:“input[name=txtLogin]”
在Object.Demo测试(C:\Workspace\myWebsite\learn nightwatch\test\e2e\My_test.js:8:8)
at_combinedTickCallback(内部/流程/下一步勾选js:67:7)
错误:无法使用:css选择器定位元素:“input[name=txtPassword]”
在Object.Demo测试(C:\Workspace\myWebsite\learn nightwatch\test\e2e\My_test.js:9:8)
at_combinedTickCallback(内部/流程/下一步勾选js:67:7)
×在等待元素出现2000毫秒时超时。-应为“可见”,但得到“未找到”
在Object.Demo测试(C:\Workspace\myWebsite\learn nightwatch\test\e2e\My_test.js:10:8)
at_combinedTickCallback(内部/流程/下一步勾选js:67:7)
最后,html只是为了完整:

<input type="text" class="inputText" id="txtLogin" name="txtLogin" >

<input type="password" class="inputText" id="txtPassword"  name="txtPassword" >

在设置值之前尝试
.waitForElementVisible('input[name=txtLogin]',6000)
。它解决了我所有的问题<代码>将很快出现,
输入[name=txtLogin]
需要一些时间才能出现

@编辑:

var conf = require('../../nightwatch.conf.js');

module.exports = {
  'Demo test' : function (browser) {
    browser
      .url('http://localhost/myWebsite?newwindow=0')
      .waitForElementVisible('body', 6000)
      .waitForElementVisible('input[name="txtLogin"]', 6000)
      .setValue('input[name="txtLogin"]', 'login')
      .setValue('input[name="txtPassword"]', 'password')
      .waitForElementVisible('input.btnLogin', 2000)
      .click('button[id="btnLogin"]')
      .assert.elementPresent("#selectTitle")
      .assert.containsText('#selectTitle', 'schedules')
      .assert.urlContains('login/login_start.asp')
      .saveScreenshot(conf.imgpath(browser) + 'titleScreen.png')
      .end();

  }
};

尝试上面的方法,只需在setValue之前复制/粘贴
.waitForElementVisible('input[name=txtLogin]',6000)
。它解决了我所有的问题<代码>将很快出现,
输入[name=txtLogin]
需要一些时间才能出现

@编辑:

var conf = require('../../nightwatch.conf.js');

module.exports = {
  'Demo test' : function (browser) {
    browser
      .url('http://localhost/myWebsite?newwindow=0')
      .waitForElementVisible('body', 6000)
      .waitForElementVisible('input[name="txtLogin"]', 6000)
      .setValue('input[name="txtLogin"]', 'login')
      .setValue('input[name="txtPassword"]', 'password')
      .waitForElementVisible('input.btnLogin', 2000)
      .click('button[id="btnLogin"]')
      .assert.elementPresent("#selectTitle")
      .assert.containsText('#selectTitle', 'schedules')
      .assert.urlContains('login/login_start.asp')
      .saveScreenshot(conf.imgpath(browser) + 'titleScreen.png')
      .end();

  }
};

试着像上面那样只是复制/粘贴

我在这方面遇到了问题,并最终返回到一个测试脚本,该脚本已经工作以确认它不是我

setValue和Selenium驱动程序似乎存在问题

我的工作是使用.execute函数并用jQuery或vanilla javascript更新表单字段

.execute(function(){document.getElementById('_EmailAddress').value = 'email@address.co.uk';})
.execute(function(){$('#_Password').val('PasswordString');})

我在这方面遇到了一些问题,最后又回到了一个测试脚本,该脚本已经成功地确认了这不是我

setValue和Selenium驱动程序似乎存在问题

我的工作是使用.execute函数并用jQuery或vanilla javascript更新表单字段

.execute(function(){document.getElementById('_EmailAddress').value = 'email@address.co.uk';})
.execute(function(){$('#_Password').val('PasswordString');})

setValue
对我来说也很棘手。有时它会输入值,然后清除这些值,现在(2017年10月10日),每当我使用
setValue
功能时,它都会突然打开Chrome设置选项卡

我现在要做的是,首先定义一个这样的函数

var setValue =  function(sel, value) {
    $(sel).val(value).change();
};
browser.url('https://google.com')
  .execute(setValue, ['#search', 'keyword'])
  .click('#search-btn')
  .waitForElementVisible('an example of selector')
  .assert.containsText('selector', '100000xxxx results')
然后从类似的夜视链函数调用它

var setValue =  function(sel, value) {
    $(sel).val(value).change();
};
browser.url('https://google.com')
  .execute(setValue, ['#search', 'keyword'])
  .click('#search-btn')
  .waitForElementVisible('an example of selector')
  .assert.containsText('selector', '100000xxxx results')

setValue
对我来说也很棘手。有时它会输入值,然后清除这些值,现在(2017年10月10日),每当我使用
setValue
功能时,它都会突然打开Chrome设置选项卡

我现在要做的是,首先定义一个这样的函数

var setValue =  function(sel, value) {
    $(sel).val(value).change();
};
browser.url('https://google.com')
  .execute(setValue, ['#search', 'keyword'])
  .click('#search-btn')
  .waitForElementVisible('an example of selector')
  .assert.containsText('selector', '100000xxxx results')
然后从类似的夜视链函数调用它

var setValue =  function(sel, value) {
    $(sel).val(value).change();
};
browser.url('https://google.com')
  .execute(setValue, ['#search', 'keyword'])
  .click('#search-btn')
  .waitForElementVisible('an example of selector')
  .assert.containsText('selector', '100000xxxx results')

嗯,我刚试过,但它还是说找不到文本框<代码>等待元素出现6000毫秒时超时。-应为“可见”,但得到“未找到”您确定定位器有效吗?请尝试
input[type=“text”]
input[id=“txtLogin”]
input[name=“txtLogin”]
之间的
是必需的。不,不需要这些工作。我可以看到Nightwatch打开了一个窗口,我看到了它寻找的文本框,但它仍然找不到。你能发布cmd输出吗?暂停是不需要的(它可能会弄乱测试),让我们。嗯,我刚刚试过,但它仍然说它找不到文本框<代码>等待元素出现6000毫秒时超时。-应为“可见”,但得到“未找到”您确定定位器有效吗?请尝试
input[type=“text”]
input[id=“txtLogin”]
input[name=“txtLogin”]
之间的
是必需的。不,不需要这些工作。我可以看到Nightwatch打开了一个窗口,我看到了它寻找的文本框,但它仍然找不到。你能发布cmd输出吗?暂停是不需要的(它可能会弄乱测试),让我们来吧。