Страницы

Поиск по вопросам

вторник, 2 октября 2018 г.

Как можно взаимодействовать с сайтом через консольное приложение?

Допустим, имеется сайт на котором есть какое-то поле.
В это поле нужно послать какое-то значение, нажать на кнопку, затем получить новую страницу, где перейти по первой ссылке.
За этими мне нужно обращаться к классу WebBrowser?
Если можно, то покажите пример(например, можно взять целевой сайт google, но без использования его API.)


Ответ

Нашел интересную либу Selenium с помощью которой, через драйвера можно взаимодействовать с реальным браузером. Довольная простая в управлении:
using OpenQA.Selenium; using OpenQA.Selenium.Firefox;
// Requires reference to WebDriver.Support.dll using OpenQA.Selenium.Support.UI;
class GoogleSuggest { static void Main(string[] args) { // Create a new instance of the Firefox driver. // Note that it is wrapped in a using clause so that the browser is closed // and the webdriver is disposed (even in the face of exceptions).
// Also note that the remainder of the code relies on the interface, // not the implementation.
// Further note that other drivers (InternetExplorerDriver, // ChromeDriver, etc.) will require further configuration // before this example will work. See the wiki pages for the // individual drivers at http://code.google.com/p/selenium/wiki // for further information. using (IWebDriver driver = new FirefoxDriver()) { //Notice navigation is slightly different than the Java version //This is because 'get' is a keyword in C# driver.Navigate().GoToUrl("http://www.google.com/");
// Find the text input element by its name IWebElement query = driver.FindElement(By.Name("q"));
// Enter something to search for query.SendKeys("Cheese");
// Now submit the form. WebDriver will find the form for us from the element query.Submit();
// Google's search is rendered dynamically with JavaScript. // Wait for the page to load, timeout after 10 seconds var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(d => d.Title.StartsWith("cheese", StringComparison.OrdinalIgnoreCase));
// Should see: "Cheese - Google Search" (for an English locale) Console.WriteLine("Page title is: " + driver.Title); } } }
Однако, все равно хотелось узнать, как можно сделать это стандартными средствами .NET.

Комментариев нет:

Отправить комментарий