在下面的代码中,我有一个想在我的JavaScript代码中访问的变量linkLocation。它显示错误“未定义链接位置”。如何在JavaScript代码中访问变量?
IWebElement link = driver.FindElement(By.LinkText("soemtext"));
String linkLocation = link.GetAttribute("href");
Console.WriteLine(linkLocation);
((IJavaScriptExecutor)driver).ExecuteScript("window.open(linkLocation, 'groupPage')");
最佳答案
根据我对Selenium在其他语言中的工作方式的经验,我希望这样的事情会起作用:
((IJavaScriptExecutor)driver).ExecuteScript(
"window.open(arguments[0], 'groupPage')", new Object[] { linkLocation });
(我没有用C#编写代码。希望上面的代码中没有明显的语法错误。)
ExecuteScript
method接受一个可选的对象数组,这些对象作为参数传递给JavaScript代码。在浏览器端,传递给ExecuteScript
的内容在函数内部执行,因此上面的代码等效于:function () {
window.open(arguments[0], 'groupPage');
}
您在自我回答中显示的连接类型通常是不安全的。如果
linkLocation
中出现双引号(可能的话;例如在查询参数中),则串联的字符串将是无效的JavaScript代码。