我正在使用夜视/硒测试网页。该网页是一系列组织到文件夹中的过程,类似于您在Windows资源管理器中看到的内容。可以通过单击文件夹来展开/折叠文件夹,并且可以单击这些过程来显示/隐藏对每个过程进行操作的按钮。
我的测试逻辑在文件夹上单击(browser.click())以展开它,然后单击基础过程以显示其按钮。单击会调用一些javascript来将成员资格切换为所选文件夹或过程的DOM类,该CSS将转换为可见或不可见的项目。 nightwatch自定义命令测试逻辑如下所示:
module.exports.command = function(folder,procedure)
{
var folderCSS = '.folder .col-title[data-title="' + folder + '"]'
var folderOpenCSS = '.folder.open .col-title[data-title="' + folder + '"]'
// Ensure the desire folder is visible, click on it to expand,
// and ensure that it has expanded
this.waitForElementVisible(folderCSS,1000)
this.click(folderCSS)
this.waitForElementPresent(folderOpenCSS,3000)
// Insert extra click on something else here to make the procedure click work, e.g.
//var folder2CSS = '.folder .col-title[data-title="folder2"]'
//this.click(folder2CSS)
// Wait for the desired procedure title to be visible and click on it,
// exposing the run button
var procedureCSS = '.procedure[data-procedurename="' +
folder + '/' + procedure + '"]'
var procedureTitleCSS = procedureCSS + ' .col-title'
this.waitForElementVisible(procedureTitleCSS,5000)
this.click(procedureTitleCSS)
// Wait for the run button to be visible and click on it to start
// the procedure
var procedureRunCSS = procedureCSS + ' .run-icon[data-original-title="run"]'
this.waitForElementVisible(procedureRunCSS,1000)
}
这对于phantomjs无头浏览器和Chrome浏览器都可以在夜视/硒下正常工作,但使用Firefox无法正常工作。单击该文件夹(this.click(folderCSS))按预期工作,但单击该过程(this.click(procedureTitleCSS))不会切换按钮显示状态。无论等待多久,上面代码中的最终waitForElementVisible超时;但是,如果我在上面的代码中取消注释文件夹和过程单击之间的代码片段,那么额外的文件夹单击会让过程单击并切换过程按钮显示状态。我已尝试使用this.pause()代替额外点击,但它不起作用,因此似乎程序点击事件被阻止。
我测试点击结果的方式或发出点击的方式是否存在固有的错误,或者在夜班/硒下是否存在Firefox的某些已知问题? 我在Windows 8.1,Firefox 43.0.4,节点v4.2.2,selenium 2.48.2上运行。顺便说一下,这曾经适用于Firefox 43.0。
更新:尝试运行--verbose命令行选项来调试selenium交互并且点击工作正常,因此我无法使用它来帮助分析问题。