Javascript 量角器-如果element.getAttribute(';class';)更改,则退出嵌套for循环

Javascript 量角器-如果element.getAttribute(';class';)更改,则退出嵌套for循环,javascript,selenium,protractor,Javascript,Selenium,Protractor,一般来说,我对量角器、javascript和异步编程都是新手。一旦我发现页面上的特定元素改变了它的类,我就很难退出嵌套for循环 不幸的是,我在自动操作的页面上有一个flash对象,我必须与之交互。我使用直接鼠标移动和点击来实现这一点,我发现这是令人满意的。我想点击一个10x10的网格模式,直到我点击网格中的某个东西,它将改变页面上另一个元素的类。这是我的密码: var selectSeat = function() { var xCoord = 157; var yCoord = 57

一般来说,我对量角器、javascript和异步编程都是新手。一旦我发现页面上的特定元素改变了它的类,我就很难退出嵌套for循环

不幸的是,我在自动操作的页面上有一个flash对象,我必须与之交互。我使用直接鼠标移动和点击来实现这一点,我发现这是令人满意的。我想点击一个10x10的网格模式,直到我点击网格中的某个东西,它将改变页面上另一个元素的类。这是我的密码:

var selectSeat = function() {
  var xCoord = 157;
  var yCoord = 57;
  var breakLoop = false;
  for (var i=0; i<10; i++) {
    for (var j=0; j<10; j++) {
      browser.actions().mouseMove(flashElement, {x: xCoord+(15*i), y: yCoord+(15*j)}).click().perform();
      browser.sleep(500);
      buttonElement.getAttribute('class').then(function(attribute) {
        if(attribute === 'black-button') {
          breakLoop = true;
        }
      })
      if (breakLoop) {
        return;
      }
      }
    }
};
var selectSeat=function(){
var xCoord=157;
var-yCoord=57;
var breakLoop=false;

对于(var i=0;i让我从一段著名的引用开始

掌握异步编程的第一个秘密:无需编程 JavaScript的循环只能同步运行,并且不能同步 用于重复异步函数

既然如此,代码中的问题就是条件

  if (breakLoop) {
    return;
  }
将在breakloop的getAttribute()比较和赋值之前执行。当您在上一次迭代中实际检查条件时,第一次迭代的量角器Webdriver命令可能仍在运行

我建议你做这样的事情。在同一个网站上看到一篇漂亮的文章

var selectSeat=函数(回调){
var xCoord=157;
var-yCoord=57;

对于(var i=0;i让我从一段著名的引用开始

掌握异步编程的第一个秘密:无需编程 JavaScript的循环只能同步运行,并且不能同步 用于重复异步函数

既然如此,代码中的问题就是条件

  if (breakLoop) {
    return;
  }
将在breakloop的getAttribute()比较和赋值之前执行。当您在上一次迭代中实际检查条件时,第一次迭代的量角器Webdriver命令可能仍在运行

我建议你做这样的事情。在同一个网站上看到一篇漂亮的文章

var selectSeat=函数(回调){
var xCoord=157;
var-yCoord=57;

对于(var i=0;正如我之前所说,我是一个新手,因此我不太了解回调函数在做什么。它如何退出循环?我尝试使用您的示例并传入一个简单返回但不起作用的函数。我只需要更多地解释您的示例在做什么,我相信我能理解。就像我之前所说的e、 我是一个新手,所以我不太了解回调函数在做什么。它是如何退出循环的?我尝试使用你的示例并传入一个简单返回但不起作用的函数。我只需要更多地解释你的示例在做什么,我相信我能理解。