Node.js 量角器-如果元素可见,如何添加if条件,请跳过此测试用例,否则请执行以下操作

Node.js 量角器-如果元素可见,如何添加if条件,请跳过此测试用例,否则请执行以下操作,node.js,selenium-webdriver,automation,jasmine,protractor,Node.js,Selenium Webdriver,Automation,Jasmine,Protractor,我尝试为测试用例添加一个“if”条件,其中包含两个可选用例 第一个是,如果它存在,那么它应该查找“idan”字符串+free@gmail.com“在屏幕上,将测试用例跳到下一个 其他-执行以下操作 测试用例- describe ('Production - New Free Account Test Case', function() { var EC = protractor.ExpectedConditions; var dashboardBtn = element(by.

我尝试为测试用例添加一个“if”条件,其中包含两个可选用例

第一个是,如果它存在,那么它应该查找“idan”字符串+free@gmail.com“在屏幕上,将测试用例跳到下一个

其他-执行以下操作

测试用例-

describe ('Production - New Free Account Test Case', function() {

    var EC = protractor.ExpectedConditions;
    var dashboardBtn = element(by.xpath('//div/md-sidenav/f-main-menu/div[1]/ul[1]/li[1]/button/div/div[1]/md-icon'));
    var noActivation = element(by.linkText("idan+free@gmail.com"));

    beforeEach(function() {
      browser.ignoreSynchronization = true;
    });

    afterEach(function() {
      browser.ignoreSynchronization = false;
    });

     it ('Production - Free Account - Activation', function() {
      browser.wait(EC.elementToBeClickable(dashboardBtn), 30000);
      dashboardBtn.click();
      browser.wait(EC.visibilityOf(element(by.css("div.task-header.font-smd.task-clickable.ng-binding.flex"))), 30000);
      noActivation.isDisplayed().then(function(isVisible) {
        if (isVisible) {
           browser.driver.sleep(1000);
           console.log("SKIPPED");
        } else {
          $$("div.task-header.font-smd.task-clickable.ng-binding.flex").get(1).click();
           var mainWindow;
              browser.driver.getAllWindowHandles().then(
                function(handles) {
                   mainWindow = handles[0]; //at this point there should be only 1 window
                }
              );

            browser.driver.getAllWindowHandles().then(function (handles) {    
               handles.forEach(function(handle) {
                 if (handle !== mainWindow) {
                    browser.driver.switchTo().window(handle)
                     //-=- switch to iFrame handler -=-
                    browser.driver.switchTo().defaultContent(); // you are now outside both frames
                    browser.driver.wait(EC.visibilityOf(element(by.css("div.clean-white-box.short-registration"))), 30000);
                    browser.driver.sleep(2000); 
                  }
              });
           }); 
        }
      });
   });

   it ('Production - Free Account - From Activation to pricing table', function() {
      noActivation.isDisplayed().then(function(isVisible) {
        if (isVisible) {
           browser.driver.sleep(1000);
           console.log("SKIPPED");
        } else {
         element(by.id("pivot_user_attributes_password")).sendKeys("password");
         element(by.id("pivot_info_business_size")).click();
         browser.wait(EC.visibilityOf(element(by.css('option[value="I do not have a business"]'))), 30000);
         element(by.css('option[value="I do not have a business"]')).click();
         browser.driver.sleep(1000);
         element(by.id("pivot_country_name")).click();
         browser.wait(EC.visibilityOf(element(by.css('option[value="United States"]'))), 30000);
         element(by.css('option[value="United States"]')).click();
         browser.driver.sleep(1000);
         element(by.id("pivot_phone_info")).sendKeys("1234567890");
         element(by.id("pivot_info_is_web_designer_false")).click();
         browser.driver.sleep(1000);
         element(by.css("input.green-button")).click();
         browser.driver.wait(EC.visibilityOf(element(by.css("div.packages"))), 30000);
       }
     });
  });

    it ('Production - Free Account - Activation process has been completed', function() {
       noActivation.isDisplayed().then(function(isVisible) {
        if (isVisible) {
            browser.driver.sleep(1000);
            console.log("SKIPPED");
        } else {
          element(by.css("a.upgrade-button.signup-button.free-button")).click();
          browser.wait(EC.visibilityOf(element(by.css("div.tasks-container.layout-column"))), 30000);
          element(by.xpath("//div/div/div[2]/div/md-content/div[3]/f-tasks/div[2]/div[1]/f-task-block[2]/div/div[2]/div[1]/div[1]")).click();
          expect(element(by.css("div.task-header.font-smd.task-clickable.ng-binding.flex")).isDisplayed()).toBe(true);
        }
      });
    });

  it ('Production - Free Account - Empty pages - Calendar first launch', function() {
     noActivation.isDisplayed().then(function(isVisible) {
        if (isVisible) {
           browser.driver.sleep(1000);
           console.log("SKIPPED");
        } else {
          browser.driver.getAllWindowHandles().then(function (handles) {
          browser.driver.close();
          browser.driver.switchTo().window(handles[0]);
         });
        }
     });
  });

});
[31m Production - Free Account - Activation - fail[0m


  1) Test cases pul Frontage Sanity Test Production - New Free Account Test C Production - Free Account - Activation
   Message:
     [31mNoSuchElementError: No element found using locator: By.linkText("idan+free@gmail.com")[0m
   Stacktrace:
     NoSuchElementError: No element found using locator: By.linkText("idan+free@gmail.com")
    at Array.forEach (native)
    at runMicrotasksCallback (node.js:337:7)
Error
    at [object Object].<anonymous> (/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:209:20)
From: Task: Asynchronous test function: it()
Error
    at [object Object].<anonymous> (/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:205:3)
    at Object.<anonymous> (/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:1:63)[31m Production - Free Account - From Activation to pricing table - fail[0m


  2) Test cases pul Frontage Sanity Test Production - New Free Account Test C Production - Free Account - From Activation to pricing table
   Message:
     [31mNoSuchElementError: No element found using locator: By.linkText("idan+f.com")[0m
   Stacktrace:
     NoSuchElementError: No element found using locator: By.linkText("idan+f.com")
    at Array.forEach (native)
    at runMicrotasksCallback (node.js:337:7)
Error
    at [object Object].<anonymous> (/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:238:20)
From: Task: Asynchronous test function: it()
Error
    at [object Object].<anonymous> (/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:237:4)
    at Object.<anonymous> (/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:1:63)[31m Production - Free Account - Activation process has been completed - fail[0m
如果用户未退出,则运行测试时出错-

describe ('Production - New Free Account Test Case', function() {

    var EC = protractor.ExpectedConditions;
    var dashboardBtn = element(by.xpath('//div/md-sidenav/f-main-menu/div[1]/ul[1]/li[1]/button/div/div[1]/md-icon'));
    var noActivation = element(by.linkText("idan+free@gmail.com"));

    beforeEach(function() {
      browser.ignoreSynchronization = true;
    });

    afterEach(function() {
      browser.ignoreSynchronization = false;
    });

     it ('Production - Free Account - Activation', function() {
      browser.wait(EC.elementToBeClickable(dashboardBtn), 30000);
      dashboardBtn.click();
      browser.wait(EC.visibilityOf(element(by.css("div.task-header.font-smd.task-clickable.ng-binding.flex"))), 30000);
      noActivation.isDisplayed().then(function(isVisible) {
        if (isVisible) {
           browser.driver.sleep(1000);
           console.log("SKIPPED");
        } else {
          $$("div.task-header.font-smd.task-clickable.ng-binding.flex").get(1).click();
           var mainWindow;
              browser.driver.getAllWindowHandles().then(
                function(handles) {
                   mainWindow = handles[0]; //at this point there should be only 1 window
                }
              );

            browser.driver.getAllWindowHandles().then(function (handles) {    
               handles.forEach(function(handle) {
                 if (handle !== mainWindow) {
                    browser.driver.switchTo().window(handle)
                     //-=- switch to iFrame handler -=-
                    browser.driver.switchTo().defaultContent(); // you are now outside both frames
                    browser.driver.wait(EC.visibilityOf(element(by.css("div.clean-white-box.short-registration"))), 30000);
                    browser.driver.sleep(2000); 
                  }
              });
           }); 
        }
      });
   });

   it ('Production - Free Account - From Activation to pricing table', function() {
      noActivation.isDisplayed().then(function(isVisible) {
        if (isVisible) {
           browser.driver.sleep(1000);
           console.log("SKIPPED");
        } else {
         element(by.id("pivot_user_attributes_password")).sendKeys("password");
         element(by.id("pivot_info_business_size")).click();
         browser.wait(EC.visibilityOf(element(by.css('option[value="I do not have a business"]'))), 30000);
         element(by.css('option[value="I do not have a business"]')).click();
         browser.driver.sleep(1000);
         element(by.id("pivot_country_name")).click();
         browser.wait(EC.visibilityOf(element(by.css('option[value="United States"]'))), 30000);
         element(by.css('option[value="United States"]')).click();
         browser.driver.sleep(1000);
         element(by.id("pivot_phone_info")).sendKeys("1234567890");
         element(by.id("pivot_info_is_web_designer_false")).click();
         browser.driver.sleep(1000);
         element(by.css("input.green-button")).click();
         browser.driver.wait(EC.visibilityOf(element(by.css("div.packages"))), 30000);
       }
     });
  });

    it ('Production - Free Account - Activation process has been completed', function() {
       noActivation.isDisplayed().then(function(isVisible) {
        if (isVisible) {
            browser.driver.sleep(1000);
            console.log("SKIPPED");
        } else {
          element(by.css("a.upgrade-button.signup-button.free-button")).click();
          browser.wait(EC.visibilityOf(element(by.css("div.tasks-container.layout-column"))), 30000);
          element(by.xpath("//div/div/div[2]/div/md-content/div[3]/f-tasks/div[2]/div[1]/f-task-block[2]/div/div[2]/div[1]/div[1]")).click();
          expect(element(by.css("div.task-header.font-smd.task-clickable.ng-binding.flex")).isDisplayed()).toBe(true);
        }
      });
    });

  it ('Production - Free Account - Empty pages - Calendar first launch', function() {
     noActivation.isDisplayed().then(function(isVisible) {
        if (isVisible) {
           browser.driver.sleep(1000);
           console.log("SKIPPED");
        } else {
          browser.driver.getAllWindowHandles().then(function (handles) {
          browser.driver.close();
          browser.driver.switchTo().window(handles[0]);
         });
        }
     });
  });

});
[31m Production - Free Account - Activation - fail[0m


  1) Test cases pul Frontage Sanity Test Production - New Free Account Test C Production - Free Account - Activation
   Message:
     [31mNoSuchElementError: No element found using locator: By.linkText("idan+free@gmail.com")[0m
   Stacktrace:
     NoSuchElementError: No element found using locator: By.linkText("idan+free@gmail.com")
    at Array.forEach (native)
    at runMicrotasksCallback (node.js:337:7)
Error
    at [object Object].<anonymous> (/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:209:20)
From: Task: Asynchronous test function: it()
Error
    at [object Object].<anonymous> (/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:205:3)
    at Object.<anonymous> (/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:1:63)[31m Production - Free Account - From Activation to pricing table - fail[0m


  2) Test cases pul Frontage Sanity Test Production - New Free Account Test C Production - Free Account - From Activation to pricing table
   Message:
     [31mNoSuchElementError: No element found using locator: By.linkText("idan+f.com")[0m
   Stacktrace:
     NoSuchElementError: No element found using locator: By.linkText("idan+f.com")
    at Array.forEach (native)
    at runMicrotasksCallback (node.js:337:7)
Error
    at [object Object].<anonymous> (/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:238:20)
From: Task: Asynchronous test function: it()
Error
    at [object Object].<anonymous> (/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:237:4)
    at Object.<anonymous> (/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:1:63)[31m Production - Free Account - Activation process has been completed - fail[0m
[310M生产-免费帐户-激活-失败[0m]
1) 测试用例pul Frontage健全性测试产品-新免费帐户测试C产品-免费帐户-激活
信息:
[31MNOSchelementError:使用定位器By.linkText(“idan”)未找到任何元素+free@gmail.com”[0m
堆栈跟踪:
NOSCHELEMENTERROR:使用定位器By.linkText(“idan”)未找到任何元素+free@gmail.com")
at Array.forEach(本机)
在runMicrotasksCallback上(node.js:337:7)
错误
在[object object]。(/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:209:20)
From:Task:Asynchronous test function:it()
错误
在[object object]。(/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:205:3)
在对象处。(/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:1:63)[3100万生产-免费帐户-从激活到定价表-失败[0万
2) 测试用例pul临街卫生测试产品-新免费帐户测试C产品-免费帐户-从激活到定价表
信息:
[31MNOSchelementError:使用定位器By.linkText(“idan+f.com”)[0m]未找到任何元素
堆栈跟踪:
NoSuchElementError:使用locator:By.linkText(“idan+f.com”)未找到任何元素
at Array.forEach(本机)
在runMicrotasksCallback上(node.js:337:7)
错误
在[object object]。(/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:238:20)
From:Task:Asynchronous test function:it()
错误
在[object object]。(/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:237:4)
在对象处。(/var/lib/jenkins/workspace/Sanity_Testing_node_12_2/testCases/newApp/freeUserTC.js:1:63)[310M生产-免费帐户-激活过程已完成-失败[0m]
元素:-

<div class="email font-xs ng-binding">idan+free@gmail.com</div>
idan+free@gmail.com

由.linkText创建的
以及由.partialLinkText创建的
仅适用于
a
元素

在您的例子中,您有一个
div
元素,需要通过文本进行过滤。您可以选择:

element(by.xpath("//div[. = 'idan+free@gmail.com' and contains(@class, 'email')]"))
或与:


@alecxe-请提供帮助!快速问题:使用locator:by.partialLinkText()
而不是.linkText()
by.linkText()
是否有任何区别?谢谢。否,它会收到相同的错误@alecxe-NoSuchElementError:使用locator:by.partialLinkText(“idan”)找不到元素+free@gmail.com")好的,如果您在那里也添加了一个wait,该怎么办:
browser.wait(EC.presenceOf(noActivation),30000);
?现在错误与这个wait命令@alecxe-“错误:等待在30020ms后超时”