将 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();
但仍然出现相同的错误。
这是您问题的解决方案:
我在您的代码中没有看到任何此类错误,但我会提出以下建议:
- 在你切换到
Alert
接受之前,慢一点,诱导一些wait
。
- 如果您正在使用
driver.switchTo().alert().accept()
那么您不需要切换回主框架。
- 当你试图通过
driver.findElement(By.xpath("html/body/div[1]/div")).click();
查找主页上的某些元素时,请放慢一点,再次诱导一些wait
。
- 您看到的错误
New connections will no longer be accepted
是严重的 Marionette
抱怨,这实际上意味着您正在尝试 geckodriver 无法实现的测试步骤。因此,您可能需要更改 geckodriver 的代码才能继续执行任务。
- 最后,你的两个 xpath 在我看来都很脆弱。您应该尝试使用逻辑唯一 xpath,而不是使用绝对 xpath。
如果这回答了您的问题,请告诉我。
这是我的代码片段:
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();
但仍然出现相同的错误。
这是您问题的解决方案:
我在您的代码中没有看到任何此类错误,但我会提出以下建议:
- 在你切换到
Alert
接受之前,慢一点,诱导一些wait
。 - 如果您正在使用
driver.switchTo().alert().accept()
那么您不需要切换回主框架。 - 当你试图通过
driver.findElement(By.xpath("html/body/div[1]/div")).click();
查找主页上的某些元素时,请放慢一点,再次诱导一些wait
。 - 您看到的错误
New connections will no longer be accepted
是严重的Marionette
抱怨,这实际上意味着您正在尝试 geckodriver 无法实现的测试步骤。因此,您可能需要更改 geckodriver 的代码才能继续执行任务。 - 最后,你的两个 xpath 在我看来都很脆弱。您应该尝试使用逻辑唯一 xpath,而不是使用绝对 xpath。
如果这回答了您的问题,请告诉我。