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

Фотография

Тест виснет при попытке sendKeys() в file input (PhantomJS)


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

#1 elvis

elvis

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

  • Members
  • PipPipPip
  • 189 сообщений
  • Город:Tallinn


Отправлено 27 ноября 2015 - 21:38

Кто хочет, может сам попытаться http://siptv.eu/converter/

Элемент By.xpath("//input[@type='file']")

 

В Firefox работает, в других браузерах не пробовал. PhantomJS 2.0, PhantomJSDriver от codeborn 1.2.1 - не работает. Виснет на методе sendKeys() и всё, дальше уже не идёт. setValue() тоже не проканывает по другой причине. 

 

Пробовал так же селенидовский uploadFile(new File(path)) с тем же результатом. В чём может быть проблема?

 


  • 0

#2 Saga

Saga

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

  • Members
  • Pip
  • 37 сообщений
  • ФИО:Maryna Kolesnik
  • Город:Киев


Отправлено 27 ноября 2015 - 23:55

На phantomjs 1.9.0 все работает


  • 0

#3 neman

neman

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

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Антон


Отправлено 28 ноября 2015 - 06:46

https://github.com/a...js/issues/10993

 

В свое время другого решения, кроме боли, страдания и retry я не нашел, потому что не мог откатиться на 1.9.8.


  • 1

#4 elvis

elvis

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

  • Members
  • PipPipPip
  • 189 сообщений
  • Город:Tallinn


Отправлено 28 ноября 2015 - 08:41

спасибо ребята!


  • 0

#5 kashee

kashee

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

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Mikhail

Отправлено 29 декабря 2016 - 09:26

Добрый день! Время идёт, проблемы остаются. Phantomjs-2.1.1 зависает на sendKeys(). Проявляется и в Win и в Linux. Где взять 1.9.0 phantomjs или где откатить версию? А может есть другое решение проблемы? Разжуйте для меня пожалуйста. 
 

ап. Нашёл в архивах гугла https://code.google....tomjs/downloads v1.9. Проблему это не решило.


Сообщение отредактировал kashee: 29 декабря 2016 - 09:54

  • 0

#6 sergueik

sergueik

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

  • Members
  • PipPipPip
  • 166 сообщений
  • ФИО:кузьмин сергей

Отправлено 29 декабря 2016 - 20:44

у phantomjs

похоже есть свой _uploadFile

https://github.com/a...bpage.cpp#L1367
 

void WebPage::_uploadFile(const QString& selector, const QStringList& fileNames)
{
    QWebElement el = m_currentFrame->findFirstElement(selector);
    if (el.isNull()) {
        return;
    }

    // Filter out "fileNames" that don't actually exist
    m_customWebPage->m_uploadFiles.clear();
    for (int i = 0, ilen = fileNames.length(); i < ilen; ++i) {
        if (QFile::exists(fileNames[i])) {
            m_customWebPage->m_uploadFiles.append(fileNames[i]);
        }
    }

    el.evaluateJavaScript(JS_ELEMENT_CLICK);
}

у меня c phantomjs версия 2.1.1, windows64 сработало
https://seleniumhq.g...tePhantomJS.htm

      String testFileName = "test.txt";
      String testFilePath = new File(testFileName).getAbsolutePath();
      driver.get("http://siptv.eu/converter/");
      element = driver.findElement(
          By.cssSelector("div#container form#file_form input#file"));
      assertThat(element, notNullValue());

      ((PhantomJSDriver) driver).executePhantomJS(String.format(
          "var page = this; page.uploadFile('input[id=file]', '%s' );",
          testFilePath.replaceAll("\\\\", "/")));
      try {
        Thread.sleep(2000);
      } catch (InterruptedException e) {

      }
      assertThat(element.getAttribute("value"), containsString(testFileName));

нажимать на submit не пробовал.


  • 0

#7 kashee

kashee

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

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Mikhail

Отправлено 30 декабря 2016 - 14:18

upload как-то не привёл ни к какому годному эффекту. Проблема решилась удалением атрибута "multiple" у input-a:

 

if (driver instanceof JavascriptExecutor) {
((JavascriptExecutor)driver).executeScript( "document.getElementsByTagName('input')[0].removeAttribute('multiple');" ); }


  • 0

#8 sergueik

sergueik

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

  • Members
  • PipPipPip
  • 166 сообщений
  • ФИО:кузьмин сергей

Отправлено 31 декабря 2016 - 03:29

спасибо -  очень рад за вас
мне показалось что
чистка multiple помогает тогда когда от там есть. напр с http://blueimp.githu...ry-File-Upload/ и ее вариациями
и с 2.11 у меня недостаточно тестов чтобы судить

 

кстати 

похоже что и у jBrowserDriver  с filе проблемы...
https://github.com/M...utf8=✓&q=upload

кто нибудь пользовался , какие впечатления  ?


  • 0


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

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