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

Фотография

Загрузить изображение


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

#21 FR33D

FR33D

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

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

Отправлено 18 июня 2013 - 07:35

Просто, если я не использую клик, у меня окно вообще не открывается и тест сразу валится и я не знаю как тут быть. А касательно пути - вполне себе можно. Главное чтоб путь в проектах был одинаковый, путь с диска до проекта может быть абсолютно различным. Спасибо всем вам за советы, то так вразумительного ответа я так и не получил, barancev, Вы считаете что если я уберу клик, то все заработает? Может быть есть еще хоть какие то мысли на этот счет?
  • 0

#22 Keiga

Keiga

    Постоянный участник

  • Members
  • PipPipPip
  • 174 сообщений
  • ФИО:Евгений
  • Город:Москва


Отправлено 18 июня 2013 - 07:54

Выложите хотя бы кусок кода страницы где кнопка browse. Насколько я понял из представленного там только одна кнопка browse которая открывает диалог для указания пути к файлу, самого же поля ввода на странице нет. если оно есть то не попало на скриншот или скрыто.
  • 1

#23 FR33D

FR33D

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

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

Отправлено 18 июня 2013 - 08:04

Выложите хотя бы кусок кода страницы где кнопка browse. Насколько я понял из представленного там только одна кнопка browse которая открывает диалог для указания пути к файлу, самого же поля ввода на странице нет. если оно есть то не попало на скриншот или скрыто.

le style="width: 640px;">
<tbody>
<tr>
<td class="col1a">
<img src="/images/back-end/webcam-photo.png">
</td>
<td class="col1b">
<div class="psevdDiv">
<input id="webcam_photo" type="hidden" value="" name="webcam_photo">
<div>
<a class="button" style="width: 210px; text-decoration: none;" data-reveal-id="webcamContainer" href="#">Take Photo with Webcam</a>
</div>
</td>
<td class="col2">
</tr>
</tbody>
</tabl

Вот код того куска страницы на html, большего предложить не могу, так как не имею доступа к исходникам.
И вы правы, кнопка Browse открывает окно, которое показано а скрине, поля ввода на странице нет. Только в этом открытом окне.
  • 0

#24 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 18 июня 2013 - 08:13


Выложите хотя бы кусок кода страницы где кнопка browse. Насколько я понял из представленного там только одна кнопка browse которая открывает диалог для указания пути к файлу, самого же поля ввода на странице нет. если оно есть то не попало на скриншот или скрыто.

le style="width: 640px;">
<tbody>
<tr>
<td class="col1a">
<img src="/images/back-end/webcam-photo.png">
</td>
<td class="col1b">
<div class="psevdDiv">
<input id="webcam_photo" type="hidden" value="" name="webcam_photo">
<div>
<a class="button" style="width: 210px; text-decoration: none;" data-reveal-id="webcamContainer" href="#">Take Photo with Webcam</a>
</div>
</td>
<td class="col2">
</tr>
</tbody>
</tabl

Вот код того куска страницы на html, большего предложить не могу, так как не имею доступа к исходникам.
И вы правы, кнопка Browse открывает окно, которое показано а скрине, поля ввода на странице нет. Только в этом открытом окне.


По полному пути.

Неужели не работает

driver.findElement(By.id("fake_pic")).sendKeys(new File("src//img//1.jpg").getAbsolutePath()); ?

В поле нужно одназначно передавать полный путь к файлу. Сам путь можно вычислять обозначенным выше способом. Это никак не влияет на то, что на разных машинах проект лежит в разных папках.
  • 0

#25 FR33D

FR33D

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

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

Отправлено 18 июня 2013 - 08:34

Вот код, который у меня сейчас, после всех Ваших рекомендаций. Не работает. Не открывается fake-pic просто на всего, пробывал с Click, данные - не вводятся.
	driver.get(baseUrl); 	
	driver.manage().deleteAllCookies();
 	    driver.navigate().refresh(); 
		Login login = new Login(driver); 
		login.candidate("FR33DeGM@gmail.com", "Asus2938"); 
		Thread.sleep(2000); 
		driver.findElement(By.linkText("My Account")).click();
 		driver.findElement(By.id("fake_pic")).sendKeys(new File("\\src\\autotests\\files\\1.jpg").getAbsolutePath());  
	    driver.findElement(By.xpath("//input[@value='Save Changes']")).click(); 
	    Assert.assertTrue(driver.getPageSource().contains("Your Profile changes have been saved."));

  • 0

#26 barancev

barancev

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

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


Отправлено 18 июня 2013 - 08:36

Должен заметить, что в представленном фрагменте кода страницы НЕТ элемента с идентификатором fake_pic.
Я предполагаю, что, возможно, где-то на странице есть скрытое файловое поле ввода -- но всё это "игра в угадайку".
Не видя страницу почти нереально Вам помочь -- видимость и невидимость полей, обработчики JavaScript -- всё это имеет значение.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#27 FR33D

FR33D

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

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

Отправлено 18 июня 2013 - 09:01

Должен заметить, что в представленном фрагменте кода страницы НЕТ элемента с идентификатором fake_pic.
Я предполагаю, что, возможно, где-то на странице есть скрытое файловое поле ввода -- но всё это "игра в угадайку".
Не видя страницу почти нереально Вам помочь -- видимость и невидимость полей, обработчики JavaScript -- всё это имеет значение.

Чем вам не елемент: driver.findElement(By.id("fake_pic")).sendKeys(new File("\\src\\autotests\\files\\1.jpg").getAbsolutePath()); ???
Тем не менее я уже сам со всем разобрался. Я создал отдельный метод, который берет абсолютный путь до проекта, и потом просто добавил "\\src\\autotests\\files\\1.jpg"\\1.jpg . Да, вы были правы касательно того что клики по елементу не нужны, во всем остальном - только критиковали и сбивали с толку.
private void Test() throws InterruptedException, Exception, NoSuchElementException {
		String path_file =  basePath + "\\src\\autotests\\files\\1.jpg";
		File file = new File(path_file);
		driver.get(baseUrl);
		driver.manage().deleteAllCookies();
	    driver.navigate().refresh();
		Login login = new Login(driver);
		login.candidate("FR33DeGM@gmail.com", "Asus2938");
		Thread.sleep(2000);
		driver.findElement(By.linkText("My Account")).click();
		driver.findElement(By.id("fake_pic")).sendKeys(path_file); 
	    driver.findElement(By.xpath("//input[@value='Save Changes']")).click();
	    Assert.assertTrue(driver.getPageSource().contains("Your Profile changes have been saved."));	    
		}
	}

  • 0

#28 Snap

Snap

    Специалист

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


Отправлено 18 июня 2013 - 14:40

Чем вам не елемент: driver.findElement(By.id("fake_pic")).sendKeys(new File("\\src\\autotests\\files\\1.jpg").getAbsolutePath()); ???
Тем не менее я уже сам со всем разобрался. Я создал отдельный метод, который берет абсолютный путь до проекта, и потом просто добавил "\\src\\autotests\\files\\1.jpg"\\1.jpg . Да, вы были правы касательно того что клики по елементу не нужны, во всем остальном - только критиковали и сбивали с толку.

В приведенном вами коде нет элемента с id="fake_pic" (кнопка "browse" как я понимаю) и вообще нет тега input type=file...
  • 0

#29 ali179s

ali179s

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Анастасия Суходола

Отправлено 16 марта 2016 - 04:55

добрый день! а подскажите, мне нужно проверить добавление файла. У меня есть кнопка добавить файл, при нажатии на нее появляется окно с title "выгрузить файл", в поле которого прописывается путь, нажимается кнопка открыть, окно закрывается, я попадаю на свою страницу, на которой появляется открытый файл и нажимаю кнопку "загрузить"

 

 

<form id="fileupload" class="" enctype="multipart/form-data" method="POST" action="">

<div class="fileupload-buttonbar">

<div class="col-lg-12">

<span class="btn btn-sm btn-success fileinput-button">

<i class="glyphicon glyphicon-plus"/>

<span>Добавить файлы</span>

<input type="file" multiple="" name="files[]"/>

</span>

<button class="btn btn-sm btn-primary start" type="submit">

<i class="glyphicon glyphicon-upload"/>

<span>Загрузить</span>

</button>

 

Мои шаги:

сначала, дела так:

пути к кнопке добавить файлы использовала такие:

By.xpath("//span[contains(text(),\"Добавить файлы\")]");

By.xpath("//div/span[1]/input");

т.е.

 WebElement addFileForGroup = driver.findElement(By.xpath("//div/span[1]/input");

addFileForGroup.clear();

addFileForGroup. sendKeys("C:\\Users\\Ali\\Desktop\\TEST.txt"); 

 

однако, получив «WebDriverException: Element must be user-editable in order to clear it», я так поняла, что оно возникает при вызове метода clear() и для файлового поля возникнет исключение 

я новичок, не судите строго. я так понимаю, мне нужно сам файл подгрузить в папку src?

почитав написанные советы выше сделала вот так:

File file = new File("src\\TEST.txt");

driver.findElement(By.xpath("//div/span[1]/input")).sendKeys(file.getAbsolutePath());

возникает Element is not clickable at point 

 

если нажать кнопку "добавить файлы", появляется окно,в поле которого прописывается путь, а затем нужно нажать кнопку открыть.

кнопка открыть -- невидимый элемент

почитав советы на эту тему, увидела следующее:

"Решить эту проблему можно с помощью javascript. Если получить текст элемента нужно единожды можно сделать это следующим способом:

public String getTextByJavascript(final WebElement element) {
String script = "var element = arguments[0];"
         + "return element.textContent;"
;
return (String) ((JavascriptExecutor)driver).executeScript(script, element);
}

"

подскажите, как это применить в моем варианте или может я что-то не так понимаю?


  • 0

#30 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 16 марта 2016 - 07:05

если нажать кнопку "добавить файлы", появляется окно,в поле которого прописывается путь, а затем нужно нажать кнопку открыть.

кнопка открыть -- невидимый элемент

почитав советы на эту тему, увидела следующее:

"Решить эту проблему можно с помощью javascript. Если получить текст элемента нужно единожды можно сделать это следующим способом:

public String getTextByJavascript(final WebElement element) {
String script = "var element = arguments[0];"
         + "return element.textContent;"
;
return (String) ((JavascriptExecutor)driver).executeScript(script, element);
}

"

подскажите, как это применить в моем варианте или может я что-то не так понимаю?

 

Не надо нажимать кнопку "Добавить файлы" - при этом открывается модальное окно с которым силениум работать не может.

 

По поводу проблемы, напишите полный код теста вашего, приведённых двух строчек мало.


  • 0

#31 ali179s

ali179s

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Анастасия Суходола

Отправлено 16 марта 2016 - 09:00

 

если нажать кнопку "добавить файлы", появляется окно,в поле которого прописывается путь, а затем нужно нажать кнопку открыть.

кнопка открыть -- невидимый элемент

почитав советы на эту тему, увидела следующее:

"Решить эту проблему можно с помощью javascript. Если получить текст элемента нужно единожды можно сделать это следующим способом:

public String getTextByJavascript(final WebElement element) {
String script = "var element = arguments[0];"
         + "return element.textContent;"
;
return (String) ((JavascriptExecutor)driver).executeScript(script, element);
}

"

подскажите, как это применить в моем варианте или может я что-то не так понимаю?

 

Не надо нажимать кнопку "Добавить файлы" - при этом открывается модальное окно с которым силениум работать не может.

 

По поводу проблемы, напишите полный код теста вашего, приведённых двух строчек мало.

 

 

 

про кнопку нажать -- я попыталась описать, что делаю ручным способом с точки зрения пользователя.

а с точки зрения функционала: у меня есть пользователь- преподаватель, преподаватель заходит в группу, и ему необходимо добавить материал для группы, когда материал добавился (его нужно проверить на наличие), нажать на кнопку загрузить

    public static void addFileForGroup (WebDriver driver) {

 Verify.wait(driver);
     driver.findElement(By.xpath("//a[contains(text(),\"Тест\")]")).click();
     Verify.wait(driver);

     File file = new File("src\\17.jpg");
     driver.findElement(By.xpath("//div/span[1]/input")).sendKeys(file.getAbsolutePath());    

Verify.wait(driver);
     driver.findElement(By.xpath("//button[@type=\"submit\"]/span[contains(text(),\"Загрузить\")]")).click();}


  • 0

#32 ali179s

ali179s

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Анастасия Суходола

Отправлено 16 марта 2016 - 09:15

 

 

если нажать кнопку "добавить файлы", появляется окно,в поле которого прописывается путь, а затем нужно нажать кнопку открыть.

кнопка открыть -- невидимый элемент

почитав советы на эту тему, увидела следующее:

"Решить эту проблему можно с помощью javascript. Если получить текст элемента нужно единожды можно сделать это следующим способом:

public String getTextByJavascript(final WebElement element) {
String script = "var element = arguments[0];"
         + "return element.textContent;"
;
return (String) ((JavascriptExecutor)driver).executeScript(script, element);
}

"

подскажите, как это применить в моем варианте или может я что-то не так понимаю?

 

Не надо нажимать кнопку "Добавить файлы" - при этом открывается модальное окно с которым силениум работать не может.

 

По поводу проблемы, напишите полный код теста вашего, приведённых двух строчек мало.

 

 

 

про кнопку нажать -- я попыталась описать, что делаю ручным способом с точки зрения пользователя.

а с точки зрения функционала: у меня есть пользователь- преподаватель, преподаватель заходит в группу, и ему необходимо добавить материал для группы, когда материал добавился (его нужно проверить на наличие), нажать на кнопку загрузить

    public static void addFileForGroup (WebDriver driver) {

 Verify.wait(driver);
     driver.findElement(By.xpath("//a[contains(text(),\"Тест\")]")).click();
     Verify.wait(driver);

     File file = new File("src\\17.jpg");
     driver.findElement(By.xpath("//div/span[1]/input")).sendKeys(file.getAbsolutePath());    

Verify.wait(driver);
     driver.findElement(By.xpath("//button[@type=\"submit\"]/span[contains(text(),\"Загрузить\")]")).click();}

 

кнопки "Добавить файлы" и "Загрузить" находятся рядом и при прохождении теста, у меня такое чувство, что пытается нажать "Загрузить"

ошибка такая:

Element is not clickable at point (310.5, 618.9000244140625). Other element would receive the click: <button type="submit" class="btn btn-sm btn-primary start"></button>

Command duration or timeout: 102 milliseconds

 

Verify.wait(driver); -- это явное ожидание Thread.sleep(1000); - ставила перед каждым нажатием на кнопки

    public static  void wait (WebDriver driver){
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
 


  • 0


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

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