我现在一直在进行一些自动化测试项目,昨天我的主管告诉我实施一个测试案例。此测试用例由Google服务,需要我在测试期间上传Excel文件。
我已经实现了打开Windows对话框的功能(自从Google在放置元素和命名元素上做了一些疯狂的工作以来,确实花了一段时间),并将Excel文件的路径复制到ClipBoard中,但是我必须{ {1}}即可打开对话框以使其正常工作。
似乎曾经有一个函数可以解决此问题,但它不可用。在Java中,使用一种叫做Robot的东西可以正常工作,但是我必须在Visual Studio中实现它,并使用IKVM(以某种方式应该可以帮助您在c#代码中使用Java代码,但我无法使其工作。)没有用。
在测试运行期间如何使用键盘?最终的问题就这么简单,但要找到答案并非那么简单。有人可以帮忙吗?
答案 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()