2016-11-03 6 views
0

Я хочу запустить скрипт с помощью вызовов API в C#. Я не хочу, чтобы веб-страница открывалась и запускался только сценарий. Я пытаюсь это сделать:Запустить скрипт с вызовом API с веб-страницы с помощью C#

HttpWebRequest request = WebRequest.Create(URL) as HttpWebRequest; 
HttpWebResponse response = request.GetResponse() as HttpWebResponse; 

HtmlDocument doc; //I have tried HtmlDocument = new HtmlDocument();, didn't work. 
var resultStream = response.GetResponseStream(); 
doc.LoadHtml(resultStream); // I have tried using Load instead of LoadHtml,didn't work out. 
doc.InvokeScript("Submit"); 

Я получаю сообщение об ошибке, используя непризнанную переменную doc. и doc не содержит имени функции LoadHtml. У меня есть Microsoft.VisualStudio.TestTools.UITesting.HtmlControls;, не помогло.

Я проверил вопросы HtmlDocument.LoadHtml from WebResponse? и Get HTML code from website in C#, но они не получили сообщение об ошибке.

Любые решения.

ответ

1

Вы должны изменить способ загрузки HTMLDocument

string html = new WebClient().DownloadString(URL); 
WebBrowser browser = new WebBrowser() 
{ 
    ScriptErrorsSuppressed = true, 
    DocumentText = string.Empty 
}; 
HtmlDocument doc = browser.Document.OpenNew(true); 
doc.Write(html); 
doc.InvokeScript("Submit"); 

Надеется, что это работает.

+0

Я попробовал, это дало ошибку, что не существует конструктор, который принимает 0 аргументы. –

+0

Вы используете HTML Agility Pack? –

+0

Нет, я его не использую .. –

0
HtmlDocument doc; //I have tried HtmlDocument = new HtmlDocument();, didn't work. 

Это не будет работать, если вы не сделаете:

HtmlDocument doc = new HtmlDocument(/*someUri*/, /*documentLocation*/); 

Вы должны инициализировать док. Вот почему вы видите

use of unassigned variable doc 

Отъезд документации здесь для подробностей:

https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.webtesting.htmldocument.aspx

В соответствии с этим, конструктор подписи:

HTMLDocument (Uri, String)

с th e description:

Инициализирует новый экземпляр класса HtmlDocument. Этот конструктор принимает строку> и использует ее как документ.

Кроме того, глядя на документации, она не имеет метод LoadHtml()