Загрузить изображение
#21
Отправлено 18 июня 2013 - 07:35
#22
Отправлено 18 июня 2013 - 07:54
#23
Отправлено 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 открывает окно, которое показано а скрине, поля ввода на странице нет. Только в этом открытом окне.
#24
Отправлено 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()); ?
В поле нужно одназначно передавать полный путь к файлу. Сам путь можно вычислять обозначенным выше способом. Это никак не влияет на то, что на разных машинах проект лежит в разных папках.
#25
Отправлено 18 июня 2013 - 08:34
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."));
#26
Отправлено 18 июня 2013 - 08:36
Я предполагаю, что, возможно, где-то на странице есть скрытое файловое поле ввода -- но всё это "игра в угадайку".
Не видя страницу почти нереально Вам помочь -- видимость и невидимость полей, обработчики JavaScript -- всё это имеет значение.
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#27
Отправлено 18 июня 2013 - 09:01
Чем вам не елемент: driver.findElement(By.id("fake_pic")).sendKeys(new File("\\src\\autotests\\files\\1.jpg").getAbsolutePath()); ???Должен заметить, что в представленном фрагменте кода страницы НЕТ элемента с идентификатором fake_pic.
Я предполагаю, что, возможно, где-то на странице есть скрытое файловое поле ввода -- но всё это "игра в угадайку".
Не видя страницу почти нереально Вам помочь -- видимость и невидимость полей, обработчики JavaScript -- всё это имеет значение.
Тем не менее я уже сам со всем разобрался. Я создал отдельный метод, который берет абсолютный путь до проекта, и потом просто добавил "\\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.")); } }
#28
Отправлено 18 июня 2013 - 14:40
В приведенном вами коде нет элемента с id="fake_pic" (кнопка "browse" как я понимаю) и вообще нет тега input type=file...Чем вам не елемент: driver.findElement(By.id("fake_pic")).sendKeys(new File("\\src\\autotests\\files\\1.jpg").getAbsolutePath()); ???
Тем не менее я уже сам со всем разобрался. Я создал отдельный метод, который берет абсолютный путь до проекта, и потом просто добавил "\\src\\autotests\\files\\1.jpg"\\1.jpg . Да, вы были правы касательно того что клики по елементу не нужны, во всем остальном - только критиковали и сбивали с толку.
#29
Отправлено 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);
}
"
подскажите, как это применить в моем варианте или может я что-то не так понимаю?
#30
Отправлено 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);
}"
подскажите, как это применить в моем варианте или может я что-то не так понимаю?
Не надо нажимать кнопку "Добавить файлы" - при этом открывается модальное окно с которым силениум работать не может.
По поводу проблемы, напишите полный код теста вашего, приведённых двух строчек мало.
#31
Отправлено 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();}
#32
Отправлено 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 анонимных