如何保持下拉菜单处于活动状态并单击硒中iframe下可用的子菜单?

时间:2019-05-23 10:41:44

标签: java selenium selenium-webdriver

要求:从“操作”下拉菜单中单击子菜单,如下所示,每个元素位于不同的iframe中

硒3.141

操作>菜单>子菜单>单击子菜单项

操作-iframe1>菜单-iframe2>子菜单-iframe3

所有这些帧都在另一个内部,而iframe3在iframe2内部,而iframe2在iframe1内部

当我单击“操作”时,下拉菜单将打开;当我尝试单击其他按钮时,下拉菜单将关闭,因此脚本会失败,并且找不到异常元素。

driver.findElement(By.xpath("//*[contains(@title, 'Actions')]")).click();
switchToFrame("listHidden");
driver.findElement(By.id("PMCProjectCreateMenu")).click();
switchToFrame("submenu");
driver.findElement(By.xpath("//*[contains(label,'Create New...')]"));

or

//in below case how to switch to iframes
Actions action = new Actions(driver);
WebElement actionMenu= driver.findElement(By.xpath("//*[contains(@title, 'Actions')]"));
action.moveToElement(actionMenu).moveToElement(driver.findElement(By.id("PMCProjectCreateMenu"))).moveToElement(driver.findElement(By.xpath("//*[contains(label,'Create New...')]"))).click().build().perform();```

Expected : To navigate through actions > menu > submenu and click on submenu
Actual: Clicks on actions and fails to continue


1 个答案:

答案 0 :(得分:0)

请尝试使用WebDriverWait和预期的条件frameToBeAvailableAndSwitchToIt,而不是调用switchToFrame(),以便驱动程序等待足够的时间以显示新的内部iframe ...

WebDriverWait wait = new WebDriverWait(driver,10);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("listHidden");

还有一些谈话,您需要在切换后单击主体,但我尚未对此进行测试。 (找到了这个here