如何处理自动化测试键盘?

时间:2019-07-09 08:29:46

标签: c# .net selenium automation keyboard

我现在一直在进行一些自动化测试项目,昨天我的主管告诉我实施一个测试案例。此测试用例由Google服务,需要我在测试期间上传Excel文件。

我已经实现了打开Windows对话框的功能(自从Google在放置元素和命名元素上做了一些疯狂的工作以来,确实花了一段时间),并将Excel文件的路径复制到ClipBoard中,但是我必须{ {1}}即可打开对话框以使其正常工作。

似乎曾经有一个函数可以解决此问题,但它不可用。在Java中,使用一种叫做Robot的东西可以正常工作,但是我必须在Visual Studio中实现它,并使用IKVM(以某种方式应该可以帮助您在c#代码中使用Java代码,但我无法使其工作。)没有用。

在测试运行期间如何使用键盘?最终的问题就这么简单,但要找到答案并非那么简单。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您处理文件上传的方式与硒有所不同。如果要使用硒,请找到文件上传的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);

然后,一旦找到上载对象的路径,就将文件路径直接发送到上载调用。

点击导入按钮以弹出上传iframe:

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

这正在使用iFrame,因此您必须切换到它。问题是iframe id是动态的,因此您需要先找到它并获取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);

答案 1 :(得分:0)

您可以使用硒作用链:

test = driver.find_element_by_name("example")
actions = ActionChains(driver)
actions.send_keys(Keys.CONTROL + 'v')
actions.perform()