GMail - ожидание страницы для полной загрузки - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь автоматизировать страницу 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]

но все равно не повезло

1 Ответ

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

Кнопка находится в iFrame, поэтому вам нужно переключиться на этот iFrame (может быть больше iframe, поэтому вам нужно переключиться на этот конкретный) и искать //button[contains(@title, 'New conversation')]

Вот соответствующая реализация Java

    @Test
    public void newConversation() throws IOException, InterruptedException{
         driver.get("https://www.google.com/intl/hi/gmail/about/");
         driver.findElement(By.linkText("प्रवेश करें")).click();
         driver.findElement(By.id("identifierId")).sendKeys("*********@gmail.com");
         driver.findElement(By.id("identifierNext")).click();
         Thread.sleep(30000);
         driver.switchTo().frame(5);
         WebElement element = driver.findElement(By.xpath("//div[contains(@aria-label,'Change profile picture')]"));
         Actions action = new Actions(driver);
         action.moveToElement(element).build().perform();
         driver.findElement(By.xpath("//button[contains(@title,'New conversation')]")).click();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...