Вместо использования Selenium выясните, какой запрос выполняет веб-сайт с использованием JavaScript (во время навигации перейдите на вкладку «Сеть» инструментов разработчика вашего браузера) и воспроизведите аналогичный запрос.
Веб-сайт использует JSON-запросы для извлечения элементов, которые гораздо проще анализировать, чем HTML.
Кроме того, если вы не знакомы с асинхронной природой Scrapy, вы, вероятно, получите неожиданные проблемы при использовании его в сочетании с Selenium.
Такие решения, как Splash или Selenium, предназначены для использования только в качестве последнего ресурса, когда все остальное терпит неудачу.
У меня была эта та же проблема, у меня был некоторый жулик
<form></form>
Подходили теги, после того как я не удалял их из своей страницы ошибка больше.
Эта проблема о Microsoft Connect:
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=393619
Я работал вокруг этого при наличии моего пользовательского элемента управления представления, наследовались этому классу вместо ViewUserControl<T>
(это - своего рода патч для RenderView). Это добилось цели для меня, надо надеяться, это работает на Вас также.
public class ViewUserControlWithoutViewState<T> : ViewUserControl<T> where T : class {
protected override void LoadViewState(object savedState) {}
protected override object SaveControlState() {
return null;
}
protected override void LoadControlState(object savedState) {}
protected override object SaveViewState() {
return null;
}
/// <summary>
/// extracted from System.Web.Mvc.ViewUserControl
/// </summary>
/// <param name="viewContext"></param>
public override void RenderView(ViewContext viewContext) {
viewContext.HttpContext.Response.Cache.SetExpires(DateTime.Now);
var containerPage = new ViewUserControlContainerPage(this);
ID = Guid.NewGuid().ToString();
RenderViewAndRestoreContentType(containerPage, viewContext);
}
/// <summary>
/// extracted from System.Web.Mvc.ViewUserControl
/// </summary>
/// <param name="containerPage"></param>
/// <param name="viewContext"></param>
public static void RenderViewAndRestoreContentType(ViewPage containerPage, ViewContext viewContext) {
string contentType = viewContext.HttpContext.Response.ContentType;
containerPage.RenderView(viewContext);
viewContext.HttpContext.Response.ContentType = contentType;
}
/// <summary>
/// Extracted from System.Web.Mvc.ViewUserControl+ViewUserControlContainerPage
/// </summary>
private sealed class ViewUserControlContainerPage : ViewPage {
// Methods
public ViewUserControlContainerPage(ViewUserControl userControl) {
Controls.Add(userControl);
EnableViewState = false;
}
protected override object LoadPageStateFromPersistenceMedium() {
return null;
}
protected override void SavePageStateToPersistenceMedium(object state) {}
}
}
Я вел блог об этом некоторое время назад.
Я также нашел эту ошибку в asp.net mvc бетой. Это может быть очень воспроизведено. После создает asp.net mvc приложение с помощью шаблона по умолчанию, добавляет управление asp:button к странице home.aspx в режиме конструктора, поразило f5, домашняя страница отображена правильно. нажмите кнопку, эта ошибка обнаружится. После некоторой отладки в mvc исходный код я нашел, что это вызывается ViewUserControl на site.master странице, просто прокомментируйте <HTML %. RenderPartial ("LoginUserControl"); %>, затем событие щелчка может быть обработано правильно.
Я также нашел, что, устанавливая как enableViewStateMac = "ложь" enableEventValidation = "ложь" viewStateEncryptionMode = "Никогда" не полезна.
В mvc исходном коде дескриптор следующего раздела рендеринг ViewUserControl
общедоступный виртуальный пустой RenderView (ViewContext viewContext) {
// TODO: Remove this hack. Without it, the browser appears to always load cached output
viewContext.HttpContext.Response.Cache.SetExpires(DateTime.Now);
**ViewUserControlContainerPage containerPage = new ViewUserControlContainerPage(this);**
// Tracing requires Page IDs to be unique.
ID = Guid.NewGuid().ToString();
containerPage.RenderView(viewContext);
}
частный запечатанный класс ViewUserControlContainerPage: ViewPage {
public ViewUserControlContainerPage(ViewUserControl userControl) {
Controls.Add(userControl);
}
}
ViewUserControl всегда представляют на недавно созданной контейнерной странице, эта страница не выберет Вашу установку. На самом деле, если шаг к этому разделу, вручную измените container.enableViewStateMac на ложь, действительно помогайте уничтожить ошибку. Таким образом, единственный способ решить его состоит в том, чтобы попросить, чтобы Microsoft изменила код mvc.
Вы используете сафари в качестве браузера? раз так затем это, вероятно, будет проблемой с большим плаванием. Удалите то плавание, и вещи будут хорошо работать.
Просто попробуйте очистить файлы cookie на вашем локальном компьютере. Была такая же проблема, и это помогло.