将 WebDriver 切换到 alert Marionette 后停止工作

After switching WebDriver to alert Marionette stops working

这是我的代码片段:

public void deleteOffer(){
        driver.findElement(By.xpath("html/body/main/div/div/div/div[2]/a[2]")).click();
        driver.switchTo().alert().accept();
        driver.findElement(By.xpath("html/body/div[1]/div")).click();
    }

我收到此错误:1494803297020 Marionette INFO New connections will no longer be accepted

它似乎在 driver.switchTo().alert().accept(); 之后就停止工作了,所以我想原因是我应该切换回主框架,但我不知道该怎么做。我已经尝试 driver.switchTo().parentFrame();driver.switchTo().defaultContent(); 但仍然出现相同的错误。

这是您问题的解决方案:

我在您的代码中没有看到任何此类错误,但我会提出以下建议:

  1. 在你切换到Alert接受之前,慢一点,诱导一些wait
  2. 如果您正在使用driver.switchTo().alert().accept()那么您不需要切换回主框架。
  3. 当你试图通过driver.findElement(By.xpath("html/body/div[1]/div")).click();查找主页上的某些元素时,请放慢一点,再次诱导一些wait
  4. 您看到的错误 New connections will no longer be accepted 是严重的 Marionette 抱怨,这实际上意味着您正在尝试 geckodriver 无法实现的测试步骤。因此,您可能需要更改 geckodriver 的代码才能继续执行任务。
  5. 最后,你的两个 xpath 在我看来都很脆弱。您应该尝试使用逻辑唯一 xpath,而不是使用绝对 xpath。

如果这回答了您的问题,请告诉我。