如何在Selenium WebDriver中按下Ctrl+V

8

在我的某个自动化测试中,我需要在文本框中按下Ctrl+V来粘贴文本。但是我无法做到这一点。我正在使用Selenium WebDriver for .net v. 2.35.0.0。

这是我的代码,它并不起作用。它先按下Ctrl,然后按下V,但文本没有被粘贴在文本框中:

IWebDriver webDriver = new InternetExplorerDriver();
            webDriver.Navigate().GoToUrl(@"C:\Users\us\Documents\Visual Studio 2012\Projects\SeleniumTests\SeleniumTests\test.html");
            var el = webDriver.FindElement(By.XPath(".//*[@id='fld']"));
            el.Click();
            Actions builder = new Actions(webDriver);
            builder.KeyDown(el, Keys.LeftControl).Perform();
            builder.SendKeys(el, "v").Perform();
            builder.KeyUp(el, Keys.LeftControl).Perform();

            webDriver.Quit();

更新: 操作系统:Windows Server 2012,x64 浏览器:IE10


1
你的代码在我这里可以正常运行。你确定你的剪贴板中有东西吗? - Yi Zeng
是的,我在运行此代码之前选择了文本。 - vmg
你使用了什么操作系统/浏览器? - vmg
3个回答

14

这是我建议的:

IWebDriver webDriver = new InternetExplorerDriver();
webDriver.Navigate().GoToUrl(@"C:\Users\us\Documents\Visual Studio 2012\Projects\SeleniumTests\SeleniumTests\test.html");
var el = webDriver.FindElement(By.XPath(".//*[@id='fld']"));
el.Click();
el.SendKeys(Keys.CONTROL+ "v");

webDriver.Quit();

它起作用了。谢谢!不过有点奇怪:在发布这个问题之前我尝试过,但是没有成功 :) 也许我错过了什么,因为我尝试了很多不同的方法。无论如何,谢谢! - vmg
@Vitaliy:可能是因为你使用了大写的“V”。由于某种原因,大写字母无法正常工作。 - Meta-Knight
我认为 Ctrl + 大写字母 'V' 不起作用,因为在 webdriver 中 'V' = Shift + 'v',总的组合键是:Ctrl + Shift + v。 - Dmitriy L

1

被接受的答案对我没有用,对我有用的是:

new Actions(driver).KeyDown(OpenQA.Selenium.Keys.Control).SendKeys("v").KeyUp(OpenQA.Selenium.Keys.Control).Perform();

0

你可以尝试这个简单的方法

driver.findElement(By.xpath(FileUpDownLoad._SOURCE_NAME)).sendKeys(Keys.CONTROL + "v");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接