繁体   English   中英

如何在硒中的javascript中访问c#变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM