在下面的代码中,我有一个想在我的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代码。

09-18 16:34