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