Как добраться до элементов внутри 2 <iframe>с помощью Selenium WebDriver? Ищете элегантный код - PullRequest
1 голос
/ 05 мая 2020


У меня есть веб-страница с тегами, это упрощенный отрывок:

<body>
...
<iframe id="outFrame">
    <iframe id ="innerFrame">
        <div id="myDiv">Some text</div>
    </iframe>
</iframe>
...
</body>

Я сделал правильно работающий код, который выглядит так:

WebElement frame = new WebDriverWait(driver, 30)
        .until(ExpectedConditions.presenceOfElementLocated(By.id("outFrame")));
WebElement hexagon = new WebDriverWait(driver.switchTo().frame(frame).switchTo().frame("innerFrame"), 10)
        .until(ExpectedConditions.presenceOfElementLocated(By.id("myDiv")));

И это не выглядит элегантным фрагментом кода. Есть предложения, как получить элемент более приличным способом? Давайте представим, каким ужасным может быть мой код, если он не получит правильный идентификатор!

1 Ответ

0 голосов
/ 05 мая 2020

Вызвать WebDriverWait () и frameToBeAvailableAndSwitchToIt ()

new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("outFrame")));
new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("innerFrame")));
new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.id("myDiv")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...