【发布时间】:2018-11-21 23:47:21
【问题描述】:
我有一个警告框,它在文本输入区域中显示一个 URL,并将链接复制到剪贴板。我希望能够打开一个新选项卡,并将 URL 粘贴到地址栏中。
我试过了:
var generatedLink = System.Windows.Forms.Clipboard.GetText();
_chromeDriver.Navigate().GoToUrl(generatedLink);
生成的链接返回 ""
我也试过了:
尝试 1:
((IJavaScriptExecutor)_chromeDriver).ExecuteScript("window.open();");
List<String> tabs = new List<String>(_chromeDriver.WindowHandles);
_chromeDriver.SwitchTo().Window(tabs[1]);
_chromeDriver.FindElement(By.XPath("//body")).SendKeys(Keys.Control + "l");
_chromeDriver.FindElement(By.XPath("//body")).SendKeys(Keys.Control + "v");
SendKeys(Keys.Control + "l") 没有选择应有的地址栏
SendKeys(Keys.Control + "v") 不粘贴文本
我知道文本被复制了,因为当我调试测试时,我可以将复制的文本粘贴到记事本中而没有任何问题。
复制发生的地方如下:
const url = window.location.host + urlPattern.stringify(newUrlParameters) + queryString;
(navigator as any).clipboard.writeText(url)
.then(() => window.prompt('Link copied to clipboard!', url))
.catch(() => window.prompt('Copy to clipboard: Ctrl+C, Enter', url));
【问题讨论】:
-
如果剪贴板上有文本,
generatedLink不应为空。您可以设置断点并验证您的网址是否存在吗?使用它适用于我的第一组代码,我必须包含 url 的“http://”部分。仅使用“www.google.com”我得到一个WebDriverException,在网址前面带有“https://”它可以正常工作。 -
@gunnerone 我设置了断点,可以手动使用 Ctrl + V 将链接粘贴到地址栏中,但 generateLink 仍然是空的。
-
尝试了类似的问题解决方案,但没有成功
标签: c# google-chrome selenium selenium-webdriver selenium-chromedriver