1

Im, использующий Selenium для C#, чтобы обслуживать полностью обработанные приложения javascript для пауков Google и пользователей с отключенным javascript. Я использую ASP.NET MVC для обслуживания страниц с моего контроллера. Мне нужно иметь возможность генерировать динамические метатеги до того, как контент будет передан вызывающему. Например, следующий код псевдо:Selenium C# Dynamic Meta Tags

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 

Я знаю, как получить исходный код страницы вызывающему, я уже делаю это, но я не могу показаться, чтобы найти правильный селектор для редактирования мета-теги, прежде чем я толкать содержимое обратно запрашивающему. Как бы я это сделал?

ответ

3

Selenium не имеет функции специально для этого. Но технически вы можете изменить метатеги с помощью JavaScript, поэтому вы можете использовать Selenium's IJavaScriptExecutor в C#.

Если страница с помощью 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); 
+0

Спасибо, это работает отлично! – ccorrin