2014-11-28 3 views
1

Я пытаюсь написать некоторые тестовые сценарии, которые включают загрузку файла через Chrome. Я использую Selenium RemoteWebDriver для тестирования веб-приложения с помощью Chrome на устройстве Samsung Note 10.Можно ли параллельно использовать Selenium RemoteWebDriver и AppiumDriver от Appium?

Мне удалось написать сценарий до нажатия кнопки загрузки файла, который, в свою очередь, вызывает контроль загрузки файлов, спрашивая меня, какой тип файла я бы хотел загрузить. Однако, поскольку это не веб-элемент управления, я не могу взаимодействовать с ним с помощью RemoteWebDriver. Я попытался создать новый экземпляр AppiumDriver, но поскольку экземпляр RemoteWebDriver уже существует, я не могу создать новый экземпляр AppiumDriver.

В любом случае, я мог бы решить эту проблему? Я попытался использовать RemoteWebDriver как AppiumDriver (несмотря на то, что он не работает), но это было невозможно.

+0

Обычно при использовании файл-загрузки, то «обойти» это 'SendKeys («// путь/к/файлу»)' для ввода элемента, а затем щелкните элемент загрузки. Поэтому вместо того, чтобы открывать окно выбора файла, этот шаг пропускается, и фокус браузера никогда не теряется. Можете ли вы это сделать с помощью собственного веб-приложения? –

+0

@MarkRowlands Я не пробовал этот подход на планшете, но он не работал, когда я попробовал его с веб-браузером ПК. Поскольку обе платформы используют веб-сайт (нет мобильной версии), было бы безопасным предположить, что он не будет работать и с планшетом? –

+0

Я бы предположил, что если это не сработает для одного, это не сработает для другого. –

ответ

0

Вы можете начать тестирование с инициализацией AndroidDriver вместо RemoteWebDriver.

Причиной этого является его реализация:

AndroidDriver extends AppiumDriver extends DefaultGenericMobileDriver extends RemoteWebDriver 

Таким образом, вы будете иметь что-то вроде:

WebDriver driver = new AndroidDriver(new URL(YOUR_REMOTE_MACHINE_HUB_URL), capabilities); 

Теперь вы можете использовать методы AppiumDriver. Вы можете загрузить файл со встроенной техникой, которую WebDriver предоставляет для этого.
Основная идея заключается в том, чтобы напрямую отправить абсолютный путь к файлу элементу, который вы обычно нажимаете, чтобы получить модальное окно - это элемент <input type='file' />.

WebElement fileInput = driver.findElement(By.xpath("//input[@type='file']")); 
fileInput.sendKeys("C:/file_to_upload.jpg");