[英]How to access c# variable in javascript in selenium
在下面的代码中,我有一个想在我的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
方法采用可选的对象数组,这些对象作为参数传递给JavaScript代码。 在浏览器端,传递给ExecuteScript
内容在函数内部执行,因此上面的代码等效于:
function () {
window.open(arguments[0], 'groupPage');
}
您在自我回答中显示的连接类型通常是不安全的。 如果linkLocation
出现双引号(可能的话;例如,在查询参数中),则串联的字符串将是无效的JavaScript代码。
我将最后一行更改为:
((IJavaScriptExecutor)driver).ExecuteScript("console.log('" + linkLocation + "'); window.open('" + linkLocation + "', 'groupPage')");
而且有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.