Перейти к содержимому

Тестирование REST API
онлайн, начало 6 апреля
Школа для начинающих тестировщиков
онлайн, начало 9 апреля
Автоматизация функционального тестирования
онлайн, начало 10 апреля
Английский для тестировщиков
онлайн, начало 13 апреля
Фотография

Ввод Login and Password в сплывающей форме

Login password

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 34

#21 WhiteCrow

WhiteCrow

    Новый участник

  • Members
  • Pip
  • 19 сообщений

Отправлено 08 Июль 2014 - 10:13

Модераториал: не дублируйте темы

У меня уже другая проблема.


  • 0

#22 maxfint

maxfint

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Максим
  • Город:Москва


Отправлено 08 Июль 2014 - 10:24

Привет!
 

Не могу совершить авторизацию на главной странице сайта в сплывающей форме

На каком шаге валится? 
Что наблюдаем в браузере? 
Пробовали ли на других браузерах? 
Пробовали ли искать элементы на по cssSelector, а по xpath например?
 


  • 0

#23 WhiteCrow

WhiteCrow

    Новый участник

  • Members
  • Pip
  • 19 сообщений

Отправлено 08 Июль 2014 - 10:35

Привет!
 

Не могу совершить авторизацию на главной странице сайта в сплывающей форме

На каком шаге валится? 
Что наблюдаем в браузере? 
Пробовали ли на других браузерах? 
Пробовали ли искать элементы на по cssSelector, а по xpath например?

 

1. валится на шаге открытия всплывающегося окна

2. В браузере открывается всплывающеся  окно и все. дальше действие не идет

3.IE/Google Chrome/FF

4. Да писал разные селекторы для поля login и password


  • 0

#24 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 08 Июль 2014 - 11:21

может всплывающее окно - iframe? Может окно появляется, но элементов в нём ещё нет? Селениум работает быстрее глаз


  • 0

#25 WhiteCrow

WhiteCrow

    Новый участник

  • Members
  • Pip
  • 19 сообщений

Отправлено 08 Июль 2014 - 11:55

может всплывающее окно - iframe? Может окно появляется, но элементов в нём ещё нет? Селениум работает быстрее глаз

 

Не думаю. вот именно тот кусочек кода который не отрабатывается. может я что то не так пишу? 

//Ввод пароля в сплывающей форме
        Actions actions = new Actions(driver);
        actions.moveToElement(driver.findElement(By.cssSelector("div.t24_vhod_link"))).build().perform();
       
        driver.findElement(By.cssSelector("#email")).clear();
        driver.findElement(By.cssSelector("#email")).sendKeys("marvin@yandex.ru");
       
        driver.findElement(By.cssSelector("#password")).clear();
        driver.findElement(By.cssSelector("#password")).sendKeys("qwerty1234");
       
        driver.findElement(By.cssSelector("div.t24_form_links * input")).click();

  • 0

#26 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 832 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 08 Июль 2014 - 13:49

 

Модераториал: не дублируйте темы

У меня уже другая проблема.

 

 

Упс, тогда извините :) Ну всё равно, пусть будет продолжением предыдущей темы.


  • 0

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


#27 WhiteCrow

WhiteCrow

    Новый участник

  • Members
  • Pip
  • 19 сообщений

Отправлено 08 Июль 2014 - 13:50

 

 

Модераториал: не дублируйте темы

У меня уже другая проблема.

 

 

Упс, тогда извините :) Ну всё равно, пусть будет продолжением предыдущей темы.

 

 

Нечего страшного


  • 0

#28 220v

220v

    Активный участник

  • Members
  • PipPip
  • 107 сообщений
  • ФИО:Олег


Отправлено 08 Июль 2014 - 16:15

 

FF 30 WD 2.42.2

 

Здесь надо проверить работает ли ВД с новой версией ФФ


  • 0

#29 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 832 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 09 Июль 2014 - 07:23

1. валится на шаге открытия всплывающегося окна

Будьте, пожалуйста, конкретнее, слово "валится" слишком двусмысленное. Какое сообщение об ошибке?

Я предполагаю, что на самом деле "валится" на следующем действии, при попытке ввести значение в поле ввода, которое находится в этом окне. Потому что нет ожидания видимости, так что Selenium пытается вводить данные в поле, когда оно ещё не появилось. И ошибка должна быть типа InvalidElementStateException.

Если это так -- добавьте ожидания. Если не так -- расскажите, как именно "валится" у Вас.
  • 0

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


#30 WhiteCrow

WhiteCrow

    Новый участник

  • Members
  • Pip
  • 19 сообщений

Отправлено 09 Июль 2014 - 11:56

 

1. валится на шаге открытия всплывающегося окна

Будьте, пожалуйста, конкретнее, слово "валится" слишком двусмысленное. Какое сообщение об ошибке?

Я предполагаю, что на самом деле "валится" на следующем действии, при попытке ввести значение в поле ввода, которое находится в этом окне. Потому что нет ожидания видимости, так что Selenium пытается вводить данные в поле, когда оно ещё не появилось. И ошибка должна быть типа InvalidElementStateException.

Если это так -- добавьте ожидания. Если не так -- расскажите, как именно "валится" у Вас.

 

 

Ожидание у меня добавлено:

//Ввод пароля в сплывающей форме
            Actions actions = new Actions(driver);
            actions.moveToElement(driver.findElement(By.cssSelector("div.t24_vhod_link"))).build().perform();
           (new WebDriverWait(driver, 15)).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#email")));
            driver.findElement(By.cssSelector("#email")).clear();
            driver.findElement(By.cssSelector("#email")).sendKeys("marvin@yandex.ru");

Но иногда всплывает вот такая ошибка. 

 

Starting ChromeDriver (v2.10.267521) on port 19691
Only local connections are allowed.
Exception in thread "main" org.openqa.selenium.TimeoutException: Timed out after 15 seconds waiting for visibility of element located by By.selector: #email
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'acer-aspire_v5', ip: '192.168.0.16', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_05'
Driver info: driver.version: unknown
at org.openqa.selenium.support.ui.FluentWait.timeoutException(FluentWait.java:259)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:228)
at Komus.example.Test1.main(Test1.java:60)

  • 0

#31 maxfint

maxfint

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Максим
  • Город:Москва


Отправлено 09 Июль 2014 - 14:13

Попробуйте следующее:
1) Установить масштаб экрана:
в Win7: панель управления \ Экран \ 100%
2) Код:

actions.moveToElement(driver.findElement(By.cssSelector("div.t24_vhod_link"))).build().perform();

заменить на:

actions.moveToElement(driver.findElement(By.cssSelector("div.t24_vhod_link"))).perform();

3) Разворачивать браузер при запуске теста. Примерно так:

driver.manage().window().maximize();

Отпишитесь о результатах.


  • 0

#32 WhiteCrow

WhiteCrow

    Новый участник

  • Members
  • Pip
  • 19 сообщений

Отправлено 10 Июль 2014 - 05:47

Попробуйте следующее:
1) Установить масштаб экрана:
в Win7: панель управления \ Экран \ 100%
2) Код:

actions.moveToElement(driver.findElement(By.cssSelector("div.t24_vhod_link"))).build().perform();

заменить на:

actions.moveToElement(driver.findElement(By.cssSelector("div.t24_vhod_link"))).perform();

3) Разворачивать браузер при запуске теста. Примерно так:

driver.manage().window().maximize();

Отпишитесь о результатах.

1)Установил масштаб экрана 100%(как и было)

2)Поменял заменил часть кода

3) Экран разворачивался до этого - аналогичным способом

 

 

Первые 3 прогона выдавалась все та же самая ошибка. Но потом 10 прогонов подряд все прошло нормально. Могу сказать что крашиться из за того что не открывается форма тест стал реже.

Starting ChromeDriver (v2.10.267521) on port 31449
Only local connections are allowed.
Exception in thread "main" org.openqa.selenium.TimeoutException: Timed out after 15 seconds waiting for visibility of element located by By.selector: #email
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'acer-aspire_v5', ip: '192.168.0.16', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_05'
Driver info: driver.version: unknown
at org.openqa.selenium.support.ui.FluentWait.timeoutException(FluentWait.java:259)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:228)
at Komus.example.Test1.main(Test1.java:60)

  • 0

#33 maxfint

maxfint

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Максим
  • Город:Москва


Отправлено 10 Июль 2014 - 06:24

 

 

 

Первые 3 прогона выдавалась все та же самая ошибка. Но потом 10 прогонов подряд все прошло нормально. Могу сказать что крашиться из за того что не открывается форма тест стал реже.

Starting ChromeDriver (v2.10.267521) on port 31449
Only local connections are allowed.
Exception in thread "main" org.openqa.selenium.TimeoutException: Timed out after 15 seconds waiting for visibility of element located by By.selector: #email
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'acer-aspire_v5', ip: '192.168.0.16', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_05'
Driver info: driver.version: unknown
at org.openqa.selenium.support.ui.FluentWait.timeoutException(FluentWait.java:259)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:228)
at Komus.example.Test1.main(Test1.java:60)

- Про первые 3 неудачных прогона. Попробуйте почистить проект, а потом перекомпилить. Вероятно остался мусор и выполнялся старый код.
- про ошибку "Timed out after 15 seconds waiting for visibility of element" 
Попытайтесь найти причину непостоянности ошибки. Продебажьте ваш код. 
Советовать что-то сложно ввиду не постоянности ошибки. 


  • 0

#34 WhiteCrow

WhiteCrow

    Новый участник

  • Members
  • Pip
  • 19 сообщений

Отправлено 10 Июль 2014 - 09:38

 


- Про первые 3 неудачных прогона. Попробуйте почистить проект, а потом перекомпилить. Вероятно остался мусор и выполнялся старый код.
- про ошибку "Timed out after 15 seconds waiting for visibility of element" 
Попытайтесь найти причину непостоянности ошибки. Продебажьте ваш код. 
Советовать что-то сложно ввиду не постоянности ошибки. 

 

Хорошо. Выполню все что вы сказали. + переписал сам код для того что бы было понятней читать его.(помогли немного)

 

package Komus.example;


import java.util.List;


import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.TimeoutException;
import org.junit.Test;


public class Test3 {
private static final String url = "http://www.komus.ru/myoffice/login";
private static final String new_pass = "qwerty1234";
private static final String old_pass = "qwerty1234";
private static final String login = "marvin@yandex.ru";
private static final String message_text = "Пароль успешно изменен!";


@Test
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\Atest\\Selenium\\Chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();


try {
driver.get(url);
firstEnter(login, old_pass, driver);
changePass(old_pass, new_pass, driver);
logout(driver);
        popupAuthorization(login, new_pass, driver);
        changePass(new_pass, old_pass, driver);
        logout(driver);
}
finally {
driver.quit();
}


}


private static void firstEnter(String login, String pass ,WebDriver driver) {


// Enter in site


By email = By.cssSelector("div.t0_block_shadow_2 > #email");
By password = By.id("js-pass");
By submit = By.cssSelector(".t92_left_col input[alt='login']");
WebElement emailField = driver.findElement(email);
emailField.clear();
emailField.sendKeys(login);
WebElement passwordField = driver.findElement(password);
passwordField.clear();
passwordField.sendKeys(old_pass);
WebElement submitField = driver.findElement(submit);
submitField.click();
}


private static void changePass(String oldPass, String newPass, WebDriver driver) {


//Смена пароля


By link_pass = By.linkText("Смена пароля");
   By password_old = By.name("password_old");
   By password = By.name("password");
   By password_check = By.name("password_check");
   By change_password = By.name("change_password");
   By success_message = By.xpath(".//*[contains(@class,'message_ok')]");
   
   driver.findElement(link_pass).click();
   
driver.findElement(password_old).clear();
driver.findElement(password_old).sendKeys(old_pass);


driver.findElement(password).clear();
driver.findElement(password).sendKeys(new_pass);


driver.findElement(password_check).clear();
driver.findElement(password_check).sendKeys(new_pass);


driver.findElement(change_password).click();


//Проверка смены пароля


new WebDriverWait(driver, 15).until(ExpectedConditions.textToBePresentInElement(success_message, message_text));




}


private static void logout(WebDriver driver) {
driver.findElement(By.linkText("Выход")).click();


}


private static void popupAuthorization(String login2, String pass2, WebDriver driver) {


   //Ввод пароля в сплывающей форме


   By auth_form = By.name("auth");
   By start_auth_link = By.cssSelector("div.t24_vhod_link");
   By email_input = By.cssSelector("#email");
   By pass_input = By.cssSelector("#password");
   By submit = By.cssSelector("div.t24_form_links * input");
   
   Actions actions = new Actions(driver);
   actions.moveToElement(driver.findElement(start_auth_link)).perform();
   new WebDriverWait(driver, 15).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(email_input));
   WebElement login_input = driver.findElement(auth_form).findElement(email_input);
   login_input.clear();
   login_input.sendKeys(login);
   WebElement password_input = driver.findElement(auth_form).findElement(pass_input);
    password_input.clear();
    password_input.sendKeys(new_pass);


   driver.findElement(auth_form).findElement(submit).click();
}


}

  • 0

#35 pplppc

pplppc

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Андрей

Отправлено 18 Февраль 2020 - 14:22

Добрый день, Всем!

Через массивы не делали?

 

ВспомогательныйКласс:

 

 

package appmanager;

import org.openqa.selenium.By;
import org.openqa.selenium.firefox.FirefoxDriver;

public class FormHelperChangePassword {
private FirefoxDriver wd;
FormHelperChangePassword(FirefoxDriver wd) {
this.wd = wd;
}

public void CurrentPassword(String pass) {
wd.findElement(By.id("old-pass-field")).sendKeys(pass);
}

public void NewPassword(String pass) {
wd.findElement(By.id("pass-field")).sendKeys(pass);
}

public void ConfirmPassword(String pass) {
wd.findElement(By.id("pass-confirm-field")).sendKeys(pass);
}
}

 

КлассСменыПароля:

 

 

package tests;

import org.testng.annotations.Test;

public class ChangePassword extends TestBase {


@Test
public void testChangePassword (String pass) {
app.getFormHelperNavigation().gotoChangePassword();
app.getFormHelperChangePassword().CurrentPassword(pass);
app.getFormHelperChangePassword().NewPassword(pass);
app.getFormHelperChangePassword().ConfirmPassword(pass);
}
}

 

Хочется все это реализовать через массив.

Накидал 5-10 паролей и автоматом выбирает из списка.

Я так понял привязка по индексу будет.

 

ВКлассеДелегатеСделатьНаПример:

String login = "тутЛогин";
String pass = "ТутПароль";
 
public void main(String[] args) {
String newPwd[] = new String[10];
newPwd[0] = "тутПароль0";
newPwd[1] = "тутПароль1";
newPwd[2] = "тутПароль2";
newPwd[3] = "тутПароль3";
newPwd[4] = "тутПароль4";
newPwd[5] = "тутПароль5";
 
for (int i = 0; i < newPwd.length; i++) {  
         try {
             formHelperChangePassword.CurrentPassword(pass);
             formHelperChangePassword.NewPassword(newPwd[i]);
             formHelperChangePassword.ConfirmPassword(newPwd[i]);
             pass = newPwd[i];
         } catch (Exception e) {
             e.printStackTrace();
         }
         System.out.println(newPwd[i]);
     }

Триай-Кач не подходит.

Кто-то, что-то нечто подобное реализовал?

Поделитесь?

Делали-ли отдельный класс Ексепшена???

 

За ранее спасибо. 


  • 0


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале