关于按钮点击的非常具体的案例

时间:2015-09-25 14:13:33

标签: c# button get

我正在创建实用程序控制台应用程序以帮助我注册我大学的某些课程。到目前为止,我已经下载了网站的内容并经常检查具体的更改,这些更改会在给定的课程已满或可以提供时向我提供信息。像那样:

WebRequest request2 = WebRequest.Create("https://usosweb.umk.pl/kontroler.php?_action=katalog2/przedmioty/pokazPrzedmiot&prz_kod=0600-OG-ChH");
request2.Method = "GET";
WebResponse response2 = request2.GetResponse();
Stream stream2 = response2.GetResponseStream();
StreamReader reader2 = new StreamReader(stream2);
string content_2 = reader2.ReadToEnd();
string drugi = getBetween(content_2, @"Stan zapełnienia grup:</b>
        <b>", "</b> (zarejestrowanych/limit)");

reader2.Close();
response2.Close();

if (drugi != pierwszy)
{
    Console.WriteLine("Rejestracja!");
    Console.Beep(3200, 900);
    System.Diagnostics.Process.Start("https://usosweb.umk.pl/kontroler.php?_action=katalog2/przedmioty/pokazPrzedmiot&prz_kod=0600-OG-ChH");
    pierwszy = drugi;
}

问题是它仍然需要我全神贯注,因为我只打开了注册按钮的网站,我的目标是让它在插槽打开后自动点击它。

很少有事情需要注意:

  • 我必须登录该网站才能在课程中注册
  • http://i.imgur.com/DtBCG3Q.jpg< - 这就是该按钮的编码方式。每次刷新
  • 时,chain_函数的名称都不同
  • http://i.imgur.com/tGX5kmy.jpg< - 这就是注册小组的样子。理想情况下,我想要一个网站在默认浏览器中打开(或者在某个地方有缓存,所以我已经登录)并自动按下该按钮,因为它不需要额外的确认。
  • 上述代码中包含了我所在大学网站之一的链接,因此您可以进一步了解如何编写按钮以及如何解决该问题。

毕竟,这甚至可能吗?我可以通过编码吗?我使用C#但是其他语言中的一些其他代码片段可以用来表示,如果这样可以使它变得更容易或更容易。

1 个答案:

答案 0 :(得分:1)

我认为对于这种任务,自动化Selenium WebDriver是最好的工具

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Chrome;


namespace WEBDRIVER
{
  class Program
  {
    static void Main(string[] args)
    {
      IWebDriver driver = new ChromeDriver();
      driver.Navigate().GoToUrl("http://www.google.com/");
      IWebElement query = driver.FindElement(By.Name("q"));
      query.SendKeys("banana");
      query.Submit();

      WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
      wait.Until((d) => { return d.Title.ToLower().StartsWith("banana"); });

      System.Console.WriteLine("Page title is: " + driver.Title);
      driver.Quit();
    }
  }
}