Как сохранить выпадающее меню активным и щелкнуть подменю, доступное в разделе iframes in selenium? - PullRequest
0 голосов
/ 23 мая 2019

Требование: Нажмите на подменю из выпадающего меню Действия, которое выглядит ниже, и каждый элемент находится в разных фреймах

Селен 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 голосов
/ 23 мая 2019

Вместо ваших вызовов switchToFrame () попробуйте использовать WebDriverWait и ожидаемое условие frameToBeAvailableAndSwitchToIt, чтобы драйвер ждал достаточно времени для отображения нового внутреннего iframe ...

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

также есть разговоры о том, что вам нужно нажать на корпус после переключателя, но я этого не проверял. (нашел это здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...