Я хочу проверить, существует ли фрейм на веб-странице с помощью Selenium, как это сделать? - PullRequest
0 голосов
/ 11 сентября 2018

После входа в мое приложение иногда открывается рамка, для чего необходимо нажать кнопку «ОК». Итак, я написал код ниже, который переключается на фрейм, нажимает кнопку ОК и снова переключается на значение по умолчанию.

driver.switchTo().frame(driver.findElement(By.id("InlineDialog_Iframe")));
driver.findElement(By.id(prop.getProperty("pending_email_close_btn_id"))).click();
driver.switchTo().defaultContent();

Но если фрейм не появляется, код выдает ошибку о том, что фрейм не существует.

Пожалуйста, дайте мне знать, как я могу проверить, существует ли фрейм, используя цикл 'if' или любым другим способом?

Спасибо.

1 Ответ

0 голосов
/ 11 сентября 2018

Привет, я должен был сделать кое-что в прошлом, что касается ифреймов, и это меня очень смущало,

Итак, самое первое, что вам нужно понять, это то, что iframe на самом деле является веб-страницей «внутри другой веб-страницы», поэтому вам потребуется switchTo().frame(...stuff..), чтобы иметь возможность что-то делать

чем когда вы закончите, вам нужно получить начальный кадр driver.switchTo().defaultContent();, чтобы вы король переходил с одной страницы на другую

Относительно найти элемент, который вы ищете в iframe, я предлагаю вам найти любой элемент, который всегда будет присутствовать, и оберните его с помощью попытки

Я также предлагаю вам создать класс, который будет хранить ваш код и ждать JS, Angular, Jquery ...

пример из моего кода:

try {
    driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[id^='xdm_default']")));//change focus to iframe
    wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.tagName("html"))));//wait for html in the iframe
    WebElement divCardsGrid = wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("div[class^='CardsGrid']"))));

    if (!divCardsGrid.findElements(By.tagName("a")).isEmpty()) {//check for external links

} catch (WebDriverException e) {
    log.error(e.getMessage());
}


//change the focus to the initial frame
driver.switchTo().defaultContent();

Надеюсь, это поможет

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