Как я могу обращаться с клавиатурой на Automation Test? - PullRequest
1 голос
/ 09 июля 2019

Я был на каком-то проекте по автоматизации тестирования, и вчера мой руководитель сказал мне, чтобы я внедрил тестовый пример.Этот тестовый пример находится на службе Google, и он требует, чтобы я загружал файл Excel во время теста.

Мне удалось открыть диалоговое окно Windows (это заняло некоторое время, так как Google проделал некоторую сумасшедшую работу по размещению элементов и присвоению им имен) и скопировать путь к файлу Excel в ClipBoard, но мне нужно CTRL + Vэто к открытому диалогу, чтобы заставить это работать.

Кажется, раньше была функция, которая может решить эту проблему, но она недоступна.В Java использование приложения под названием Robot работает нормально, но я должен реализовать его в Visual Studio, а использование IKVM (каким-то образом должно помочь вам использовать код Java в вашем коде на c #, но я не мог заставить его работать). Не работало.

Как использовать клавиатуру во время выполнения теста?Этот главный вопрос очень прост, но не так просто найти ответ.Может кто-нибудь помочь, пожалуйста?

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Вы обрабатываете загрузку файлов немного иначе, чем селен. Если вы хотите использовать селен, найдите xpath или id для загрузки файла. Тогда используйте ниже.

     var value= "test.csv";   //in case you run tests with multiple files you can pass in just a file name.Just create a files dir and drop your test files in there. 

Ниже будет создано: "c: \ my \ path \ to \ files \ test.xls"

     string filePath = string.Format(@"c:\my\path\to\files\{0}", value);

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

Нажмите кнопку импорта, чтобы открыть загрузочный фрейм:

driver.FindElement(By.Id("ly0-layerview-import-link")).Click();

Это использует iFrame, поэтому вы должны переключиться на него. Проблема в том, что идентификатор iframe является динамическим, поэтому вам нужно сначала найти его и получить атрибут id, а затем переключиться на него.

var iframe = driver.FindElement(By.XPath("//iframe[contains(@src, 'picker')]")).GetAttribute("id");

Вам потребуется код для переключения на iframe - если у вас его нет, просто создайте метод.

driver.SwitchToIframe(iframe);

Затем загрузите файл -

driver.FindElement(By.XPath("//input[@type='file']")).SendKeys(filePath);
0 голосов
/ 09 июля 2019

Вы можете использовать цепочки действий Selenium:

test = driver.find_element_by_name("example")
actions = ActionChains(driver)
actions.send_keys(Keys.CONTROL + 'v')
actions.perform()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...