Selenium C#动态元标记

时间:2013-09-04 04:14:41

标签: c# asp.net-mvc selenium selenium-webdriver single-page-application

我正在使用Selenium for C#,以便为谷歌蜘蛛和禁用javascript的用户提供完全呈现的javascript应用程序。我正在使用ASP.NET MVC来从我的控制器提供页面。我需要能够在将内容提供给调用者之前生成动态元标记。例如,以下伪代码:

var pageSource = driver.PageSource; // This is where i get my page content         

var meta = driver.findElement(By.tagname("meta.description")).getAttribute("content");
meta.content = "My New Meta Tag Value Here";

return driver.PageSource; // return the page source with edited meta tags to the client

我知道如何将页面源提供给调用者,我已经这样做了,但在将内容推回给请求者之前,我似乎无法找到正确的选择器来编辑元标记。我该如何做到这一点?

1 个答案:

答案 0 :(得分:3)

Selenium没有专门针对此的功能。但从技术上讲,您可以使用JavaScript更改元标记,因此您可以在C#中使用Selenium的IJavaScriptExecutor

如果页面使用jQuery,这是一种方法:

// new content to swap in
String newContent = "My New Meta Tag Value Here";

// jQuery function to do the swapping
String changeMetasScript = "$('meta[name=author]').attr('content', arguments[0]);"

// execute with JavaScript Executer
IJavaScriptExecutor js = driver as IJavaScriptExecutor;
js.ExecuteScript(changeMetasScript, newContent);