C# 我如何处理键盘自动测试?

C# 我如何处理键盘自动测试?,c#,.net,selenium,automation,keyboard,C#,.net,Selenium,Automation,Keyboard,我现在正在进行一些自动化测试项目,昨天我的主管让我实现一个测试用例。这个测试用例是谷歌的服务,它要求我在测试期间上传一个Excel文件我成功地打开了Windows对话框(谷歌在放置元素和命名元素方面做了一些疯狂的工作,这确实花了一段时间),并将Excel文件的路径复制到剪贴板中,但我必须CTRL+V打开对话框才能使其正常工作以前似乎有一个函数可以解决这个问题,但现在不可用。在Java中,使用一个叫做Robot的东西可以很好地工作,但我必须在Visual Studio中实现它,并使用IKVM(在某

我现在正在进行一些自动化测试项目,昨天我的主管让我实现一个测试用例。这个测试用例是谷歌的服务,它要求我在测试期间上传一个Excel文件

我成功地打开了Windows对话框(谷歌在放置元素和命名元素方面做了一些疯狂的工作,这确实花了一段时间),并将Excel文件的路径复制到剪贴板中,但我必须
CTRL+V
打开对话框才能使其正常工作

以前似乎有一个函数可以解决这个问题,但现在不可用。在Java中,使用一个叫做Robot的东西可以很好地工作,但我必须在Visual Studio中实现它,并使用IKVM(在某种程度上应该可以帮助您在c#代码中使用Java代码,但我无法让它工作。)不起作用


测试运行时如何使用键盘?这个终极问题很简单,但找到答案却不是那么简单。有人能帮忙吗?

您可以使用Selenium动作链:

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

使用selenium处理文件上传的方式有点不同。如果要使用selenium,请查找文件上载的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”

找到上传对象的路径后,就可以将文件路径直接发送到上传调用

单击导入按钮弹出上载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);

您可以使用键盘事件、SendInput或SendKeys以编程方式发送键盘输入。这可能会有帮助,因为我正在进行NUnit测试,所以它不起作用。问题解决了吗?不幸的是,没有,我将我的项目从Visual Studio移到了Katalon Studio,这是一个基于Java的自动化工具,具有上载文件的功能(如果不起作用,您可以创建一个关键字并在上面执行键盘操作)。如果你有一个解决方案,我很乐意倾听。我如何在我的代码中实际使用它?ActionChains未被识别。需要导入:从selenium.webdriver.common.action_chains导入ActionChainsUhm,我认为您的解决方案适用于基于Java的实现,与common等不同。在OpenQA.selenium下,我使用的是C#和Visual Studio.Hmm,可能,但不仅仅是Java,该模块来自selenium webdriver。对于python和selenium,这两个功能都很好。SendKeys可能适用于许多上载按钮,但我正在处理的那个按钮显然不允许您这样做。它是什么google服务?同样,您没有写入弹出窗口。您甚至不需要单击“浏览”按钮来打开该对话框。您正在将文件路径直接写入上载输入元素,该元素将上载文件。如果要直接写入windows对象,请查看AutoIT。使用起来要困难得多,我建议上传一个文件的方式就是Google MyMAps。它不做任何事情发送键的按钮。更新了我的答案一点,以帮助您。我能很容易地让它工作。你可能有一些问题。上载对话框位于一个弹出窗口中,该弹出窗口是一个iframe。iframe id是动态的,因此您必须首先获取它。我搜索了iframe,抓起id并保存了它。然后我每次都能换上它。所以这是必须的。只要记住,上传完成后,你需要切换回主要内容。感谢你的努力,它是有效的:)我绝对不认为这是一个iframe。。
driver.FindElement(By.XPath("//input[@type='file']")).SendKeys(filePath);