要求:从“操作”下拉菜单中单击子菜单,如下所示,每个元素位于不同的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
答案 0 :(得分:0)
请尝试使用WebDriverWait和预期的条件frameToBeAvailableAndSwitchToIt,而不是调用switchToFrame(),以便驱动程序等待足够的时间以显示新的内部iframe ...
WebDriverWait wait = new WebDriverWait(driver,10);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("listHidden");
还有一些谈话,您需要在切换后单击主体,但我尚未对此进行测试。 (找到了这个here