如何处理自动化测试中的键盘?
How can I handle Keyboard on Automation Test?
我现在一直在做一些自动化测试项目,昨天我的主管让我实施一个测试用例。这个测试用例在 Google 的服务上,它要求我在测试期间上传一个 Excel 文件。
我已经打开了 Windows 对话框(这确实花了一段时间,因为 Google 在放置元素和命名它们方面做了一些疯狂的工作)并复制我的 Excel 文件的路径到剪贴板,但我必须 CTRL + V
它打开对话框才能使其工作。
好像以前有功能可以解决这个问题,但是没有了。在 Java 中,使用名为 Robot 的东西工作正常,但我必须在 Visual Studio 中实现它并使用 IKVM(不知何故应该可以帮助您在 c# 代码中使用 Java 代码,但我不能' t 使它工作。)没有工作。
考试时如何使用键盘 运行?这个终极问题就这么简单,但要找到答案却没那么简单。有人可以帮忙吗?
您可以使用 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"
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);
我现在一直在做一些自动化测试项目,昨天我的主管让我实施一个测试用例。这个测试用例在 Google 的服务上,它要求我在测试期间上传一个 Excel 文件。
我已经打开了 Windows 对话框(这确实花了一段时间,因为 Google 在放置元素和命名它们方面做了一些疯狂的工作)并复制我的 Excel 文件的路径到剪贴板,但我必须 CTRL + V
它打开对话框才能使其工作。
好像以前有功能可以解决这个问题,但是没有了。在 Java 中,使用名为 Robot 的东西工作正常,但我必须在 Visual Studio 中实现它并使用 IKVM(不知何故应该可以帮助您在 c# 代码中使用 Java 代码,但我不能' t 使它工作。)没有工作。
考试时如何使用键盘 运行?这个终极问题就这么简单,但要找到答案却没那么简单。有人可以帮忙吗?
您可以使用 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"
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);