Я пытаюсь автоматизировать страницу gmail (для какой-либо проверки электронной почты), после ввода имени пользователя и пароля я хочу дождаться полной загрузки страницы, прежде чем перейти к следующему действию.
Вот что я пробовал:
Selenium2Library.Input Text //input[contains(@id, "identifierId")] ${local_email_username}
Selenium2Library.Click Element //span[text()="Berikutnya"]
Sleep 2s
Selenium2Library.Wait Until Element Is Visible //input[contains(@name, "password")] timeout=30s
Selenium2Library.Input Password //input[contains(@name, "password")] ${local_email_password}
Selenium2Library.Click Element //span[text()="Berikutnya"]
Sleep 2s
Selenium2Library.Wait Until Element Is Visible //input[contains(@aria-label, "Search")] timeout=30s
### should be logged in to gmail
Log >>> logged in to gmail. sleeping..
Sleep 5s
### make sure the email page fully loaded
Log >>> making sure the email page fully loaded.. waiting new conversation button appeared
Comment Wait Until Keyword Succeeds 10x 2s Selenium2Library.Page Should Contain ${email_name}
Wait Until Keyword Succeeds 20x 3s Selenium2Library.Page Should Contain Element //button[contains(@title, 'New conversation')]
Log >>> email page fully loaded. start searching activation email...
Чего я хочу добиться, так это ожидания новой кнопки разговора, которая означает, что страница полностью загружена (//button[contains(@title, 'New conversation')])
Проблема в том, что скрипт никогда не находит кнопку. Я попытался проверить и найти этот путь, и элемент был найден.
Есть ли какое-то решение для этого?
Обновление:
я попытался использовать Select Frame, как это .. как @Gaurav сказал .. вот код: |
Selenium2Library.Select Frame ${iframe_locator}
Wait Until Keyword Succeeds 20x 3s Selenium2Library.Page Should Contain Element //button[contains(@title, 'New conversation')]
Selenium2Library.Unselect Frame
где $ {iframe_locator} равно //body/div[7]/div[3]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/iframe[2]
но все равно не повезло