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

Фотография

Ввод 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 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 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 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 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


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

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