>我有一个警告框,在文本输入区域中显示一个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");
发送键(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));
若要打开包含从剪贴板复制的URL的新选项卡,您需要引用命名空间System.Windows.Forms,您可以使用以下解决方案:
using System.Windows.Forms;
// other code
string myURL = Clipboard.GetText()
((IJavaScriptExecutor)_chromeDriver).ExecuteScript("window.open('" + myURL +"');");
如果要将URL设置为地址栏,以下是解决方案:
((IJavaScriptExecutor)Driver).ExecuteScript("navigator.clipboard.readText().then(text => window.location.replace(text));");
或使用文本复制包:
Driver.Navigate().GoToUrl(new TextCopy.Clipboard().GetText());