RC селена>, как загрузить файл с помощью attachFile ()

Работая в нескольких компаниях с 1 000 + рабочие, я нашел, что в общем и целом, они все используют По необходимости.

я спросил, "Почему Вы не используете что-то еще? SVN? Мерзавец? Подвижный? Darcs?" - и они сказали, что (это - то же для всех компаний) - когда они приняли решение пойти с По необходимости, это было или что, или SourceSafe или CVS - и честно, учитывая те три варианта, я пойду с По необходимости, также.

'более трудным' системам управления версиями трудно нарастить обороты с таким количеством людей, и много преимуществ DCVS менее выгодно, когда у Вас есть объем Ваших команд программного обеспечения, работающих в 18 футах друг из друга.

По необходимости имеет много рычагов API для разработчиков для использования, и для централизованной системы, она имеет много наглости.

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

8
задан Saara 10 November 2009 в 13:13
поделиться

4 ответа

I got solution for this, use selenium.focus method and the selenium.keyPressNative/keyReleaseNative methods.

You will need to give focus to the text box using:

selenium.focus("text box locator");

Then if your input file is C:\tools\File.txt you need to type the letters like so:

selenium.keyDownNative("16"); //SHIFT ON

selenium.keyPressNative("67"); // c shift makes it C

selenium.keyPressNative("59"); // ; Shift makes it : (you can't do colon directly)

selenium.keyUpNative("16"); // SHIFT OFF

selenium.keyPressNative("47"); // slash

selenium.keyPressNative("84"); // t

selenium.keyPressNative("79"); // o

selenium.keyPressNative("79"); // o

selenium.keyPressNative("76"); // l

selenium.keyPressNative("83"); // s

selenium.keyPressNative("47"); // slash

selenium.keyDownNative("16"); //SHIFT ON

selenium.keyPressNative("70"); // f shift makes it F

selenium.keyUpNative("16"); // SHIFT OFF

selenium.keyPressNative("73"); // i

selenium.keyPressNative("76"); // l

selenium.keyPressNative("69"); // e

selenium.keyPressNative("46"); // .

selenium.keyPressNative("84"); // t

selenium.keyPressNative("88"); // x

selenium.keyPressNative("84"); // t

selenium.keyPressNative("10"); // Enter

selenium.keyReleaseNative("10"); // Enter

I've ended the sequqnce with an 'Enter' character. Sometimes this doesn't work so you may need to click the button (if you know the element locator for it).

1
ответ дан 5 December 2019 в 19:00
поделиться

«fileLocator» - это не URL-адрес, а локатор, как указано вверху в документации javadoc класса Selenium. Это указатель ввода, используемый для выбора файла.

«fieldLocator» - это URL-адрес, указывающий на файл, который вы хотите установить в поле ввода формы, как указано в цитируемом документе.

В Firefox в режиме Chrome (browserId = * chrome вместо * firefox), это работает должным образом. Документировано, что он работает только с этим идентификатором браузера)

Например: attachFile ("uploadField", Thread.currentThread (). GetContextClassLoader (). GetResource ("files / sample.pdf"). ToString ());

1
ответ дан 5 December 2019 в 19:00
поделиться

Намного проще использовать $ sel-> type и $ sel-> focus. Ниже хорошая статья.

http://bitsilearn.blogspot.com/

0
ответ дан 5 December 2019 в 19:00
поделиться

Это старый вопрос, но я недавно решил проблему, сделав вот что

    //Start an auto it script that selects the file manually
    if(browser.contains("iexplore")){
        Runtime r= Runtime.getRuntime();
        Process p = null;
        try {
            p = r.exec("C:\\uploadFile.exe  \"Files\" \"ctl00$ContentPlaceHolder1$FilesView$ctl02$NewFile\" \"C:\\GhostTagBug2.ttx\"");

        }catch(Exception e){}
        p.waitFor();
    } else {
        //Tested on firefox
        //Get focus and type the path manually
        selenium.focus("xpath=//input[contains(@id,\"_NewFile\")]");
        selenium.type("xpath=//input[contains(@id,\"_NewFile\")]", "C:\\GhostTagBug2.ttx");
    }

browser - это просто переменная, содержащая информацию о том, в каком браузере запущен Selenium скрипт, а код, очевидно, на java.

Для IE uploadFile.exe - это автоматический скрипт, который выглядит следующим образом.


#include IE.au3
AutoItSetOption("WinTitleMatchMode","2") ; set the select mode to select using substring

;Normally run from command line
if($cmdLine[0] > 2) then 
    $titlex = $cmdLine[1] ;Title of the window
    $form = $cmdLine[2] ;Name of the file upload/save form object
    $file = $cmdLine[3] ;Path of the file to upload
Else
    ;Testing fields
    $titlex = "Files"
    $form = "ctl00$ContentPlaceHolder1$FilesView$ctl02$NewFile"
    $file = "C:\\GhostTagBug2.ttx"
EndIf

WinWait($titlex) ; match the window with substring
$title = WinGetTitle($titlex) ; retrives whole window title
WinSetState($title, "", @SW_MAXIMIZE) ;Maximize the window incase button is hidden
WinActivate($title)
WinWaitActive($title)

$oIE = _IEAttach ("Files")
$oT = _IEGetObjByName ($oIE, $form)
;Move the mouse to the button on the form and click it
MouseMove (_IEPropertyGet ($oT, "screenx") + _IEPropertyGet ($oT, "width") - 10, _IEPropertyGet ($oT, "screeny") + _IEPropertyGet ($oT, "height") / 2)
MouseClick ("left")

;Wait for upload screen then input the file and close it
WinWait ("Choose File to Upload")
$hChoose = WinGetHandle ("Choose File to Upload")
ControlSetText ($hChoose, "", "Edit1", $file)
ControlClick ($hChoose, "", "Button2")

;Restore window state
WinSetState($title, "", @SW_RESTORE)

По сути, он захватывает заголовок окна, увеличивает его, вводит файл для загрузки, нажимает кнопку выбора и возвращается в Selenium. Я тестировал его в IE 8, но я не вижу причин, по которым любой IE, поддерживаемый библиотекой auto it's _IE, не смог бы справиться с этим.

Я видел много скриптов для роботов и хаков для firefox, где вы включаете javascript, чтобы делать дополнительные вещи. Оба этих способа не требуют модификации браузера.

Прошу прощения за отсутствие комментариев, этот код все еще в процессе.

4
ответ дан 5 December 2019 в 19:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: