随机关闭'PopUps'

时间:2017-01-12 17:19:25

标签: java maven selenium selenium-webdriver

  1. 我创建了运行相同持续时间的WebDriver测试。
  2. 有些测试可能会说'PopupX'会在30秒后出现。
  3. 在某些测试'PopupX'将出现在60秒
  4. 在某些测试'PopupX'将出现在35秒
  5. 你理解id。

  6. 弹出窗口始终有一个唯一的ID是关闭应用程序的'X',甚至不同的弹出窗口也有相同的'X'关闭选项。

  7. 是否有人知道如何不断搜索并关闭“一种连续轮询”形式,如果在任何测试用例中随时出现,都会关闭弹出窗口?

  8. enter image description here

    1. 我知道下面列出的以下方法有效,可以成功关闭弹出窗口:

      public void closeGiveawayPopup() throws InterruptedException {
      WebDriverWait wait = new WebDriverWait(driver, 10);
      try {
          List<WebElement> elements = wait
                  .until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector(".close")));
          for (WebElement element : elements) {
              if (element.isDisplayed()) {
                  element.click();
                  Thread.sleep(1000);
                  wait.until(ExpectedConditions.invisibilityOfAllElements(elements));
                  Thread.sleep(2000);
              }
          }
      } catch (Exception e) {
          throw (e);
      }
      
    2. 我试图在TestNG'ForeMethod'注释中添加以下方法,但url dosnt甚至加载:

      public void closeGiveawayPopup() throws Exception {
      try {
          List<WebElement> elements = getDriver().findElements(By.cssSelector(".close"));
          for (WebElement element : elements) {
              if (element.isDisplayed()) {
                  element.click();
              }
          }
      } catch (Exception e) {
          throw (e);
      }
      

      }

    3. 下面列出了弹出窗口的详细信息: enter image description here

1 个答案:

答案 0 :(得分:1)

我不认为你做错了菲尔。 @BeforeMethod注释是要走的路。唯一需要改进的是分别为浏览器启动/关闭包括(如果你还没有)@BeforeClass注释。也许,这就是为什么浏览器甚至不打开&#39;正如你在上面的描述中提到的那样。所以像这样:

driver.findElement(By.xpath("//div[@id='competiton_giveaway_popup']//button[@id='close']"));

我能想到的唯一方法就是进行持续的民意调查&#39;你所追求的效果是让你的@Test真的很小(一步一步)。这样希望你能达到预期的效果。因此,不要在1Test下捆绑大量的WebDriver操作,因为这会增加同时出现弹出窗口的风险。

唯一令我困惑的是你的评论&#39;网址甚至没有加载&#39;。你确定你抓住了实际的弹出窗口并没有关闭整个窗口吗?

如果是这种情况,或者上述情况不适合您,请尝试使用Xpath而不是CSS。从您的屏幕截图中,您需要展开div [@id =&#39; competition_inner_和外部详细信息&#39;]并在某处找到关闭按钮(可能您正在寻找&lt; input&gt;,&lt; i&gt;或&lt; button&gt;标记,然后我将能够为您提供更多帮助,并为您提供完整的Xpath,以便您自己尝试。

这样的事情:

WebDriverWait wait = new WebDriverWait(driver, 10);

PS。想到的另一件事是,仔细检查你是否正在使用实际的Testng注释而不是Junit,因为当从IDE导入时,我很容易感到困惑和错误点击(我正在看你的Eclipse!)。因此,您可以删除@BeforeMethod注释并再次编写,确保它指向Testng。

PS2。在你的第9步,你错过了

a

线。我希望这不是给你带来麻烦的人,请仔细检查并告诉我。

祝你好运!