ccorrin
ccorrin

Reputation: 502

Selenium C# Dynamic Meta Tags

Im using Selenium for C# in order to serve fully rendered javascript applications to google spiders and users with javascript disabled. I am using ASP.NET MVC to serve the pages from my controller. I need to be able to generate dynamic meta tags before the content is served to the caller. For example, the following pseudo code:

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

I know how to get the page source to the caller, i am already doing this, but i cant seem to find the right selector to edit the meta tags before i push the content back to the requester. How would I accomplish this?

Upvotes: 1

Views: 669

Answers (1)

Dingredient
Dingredient

Reputation: 2199

Selenium doesn't have a feature specifically for this. But technically, you can change meta tags with JavaScript, so you can use Selenium's IJavaScriptExecutor in C#.

If the page is using jQuery, here's one way to do it:

// 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);

Upvotes: 3

Related Questions