Skip to content

Brakzalk/Test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

using System; using System.IO; using System.Reflection; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System.Collections.Generic; using System.Collections.ObjectModel;

namespace NishinoLibrary { class Selenium {

    static private ChromeDriver chrome;
    static private ChromeOptions options;

    static private int waittime;

    public Selenium()
    {
        options = new ChromeOptions();
        waittime = 500;
    }

    public void SettingTime(int time)
    {
        if (time >= 500) waittime = time;
        else Console.WriteLine("0.5秒以下を設定することはできません。");
    }


    //ブラウザを表示しない設定を行うメソッド
    public void HideOption()
    {
        Option("--headless");
    }


    //ブラウザを開く前にオプションを入れる
    public void Option(string op)
    {
        options.AddArgument(op);
    }



    //クローリングを開始
    public void CreateBrowser()
    {
        chrome = new ChromeDriver(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), options);
    }


    //Accessメソッド
    public void Access(string url)
    {
        chrome.Url = url;
        //一秒間(1000ミリ秒)停止する
        System.Threading.Thread.Sleep(waittime);
    }

    


    public List<string> ReturnElementString(string base_tag, string tag, string word)
    {
        //指定タグのエレメントを持つ一覧を検索
        ReadOnlyCollection<IWebElement> elements = chrome.FindElements(By.TagName(base_tag));
        List<string> sort_string = new List<string> { };
        for (int i = 0; i < elements.Count; i++)
        {
            if (elements[i].GetAttribute(tag).Contains(word))
            {
                sort_string.Add(elements[i].GetAttribute(tag));
            }
        }
        return sort_string;
    }


    public void OutputTextbox(string input_word,int box_num)
    {
        //chrome.FindElement(By.ClassName("form-control")).SendKeys(input_word);
        chrome.FindElements(By.ClassName("form-control"))[box_num].SendKeys(input_word);
    }

    //Clickメソッド(工事中)
    public void Click(string kind_element)
    {
        chrome.FindElement(By.Id(kind_element)).Click();
    }


    public string GetPageSource()
    {
        return chrome.PageSource;
    }

    //更新
    public void RefreshPage()
    {
        chrome.Navigate().Refresh();
    }


    //Quitメソッド
    public void Quit()
    {
        chrome.Quit();
    }



    public void TestChrome()
     {
        // ChromeDriverオブジェクトを生成します。
        var chrome = new ChromeDriver(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location));
        // URLに移動します。
        chrome.Url = @"http://www.google.com/";
        // すぐ終了しないよう、キーが押されるまで待機します。
        Console.ReadKey();
        // ブラウザを閉じます。
        chrome.Quit();
    }

} }

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using NishinoLibrary; using System.IO;

namespace Superme { public partial class Form1 : Form { //other static Selenium sel;

    public Form1()
    {
        InitializeComponent();
    }

    //ページロード時の処理
    private void Form1_Load(object sender, EventArgs e)
    {
        //Timerメソッドを生成
        timer1.Interval = 200;//200ms
        timer1.Tick += new EventHandler(timer1_Tick);
        timer1.Enabled = true;
        NowTime.Text = DateTime.Now.ToString("HH: mm:ss");

        SeleniumTimer.Interval = 100;//1000ms
        SeleniumTimer.Tick += new EventHandler(SeleniumTimer_Tick);
        SeleniumTimer.Enabled = false;


        // ChromeDriverオブジェクトを生成
        sel = new Selenium();
        sel.CreateBrowser();
        sel.Access(@"file:///C:/Users/ynishino/Desktop/Superme/Superme_110033.html");


        FirstNameTextBox.Text = "Yuki";
        LastNameTextBox.Text = "Nishino";
        EmailTextBox.Text = @"nishino23210@gmail.com";
        TelTextBox.Text = "08046877867";

    }



    //100msごとに定期発生させる処理
    private void timer1_Tick(object sender, EventArgs e)
    {
        //表示時刻を更新
        NowTime.Text = DateTime.Now.ToString("HH:mm:ss");
        //if (DateTime.Now.ToString("HHmmss") == "105945")
        //{
        //    Now.Text = "保存中";
        //    SeleniumTimer.Enabled = true;
        //}
        //if (DateTime.Now.ToString("HHmmss") == "110200")
        //{
        //    Now.Text = "保存完了";
        //    SeleniumTimer.Enabled = false;
        //}


    }

    //Selenium実行中に発動させる処理
    private void SeleniumTimer_Tick(object sender, EventArgs e)
    {
        //抽選サイトがクローズしているかを判定
        if (sel.GetPageSource().Contains("クローズ"))
        {
            //ページをリフレッシュ
            sel.RefreshPage();
        }
        else
        {
            SeleniumTimer.Enabled = false;
            Now.Text = "入力中";
            //			<input name="c9d8c800e05378825bc8a952add0fa69" placeholder="your name" size="50" maxlength="25" class="form-control" autocomplete="off" value="">
            sel.OutputTextbox(FirstNameTextBox.Text+LastNameTextBox.Text, 0);
            sel.OutputTextbox(EmailTextBox.Text, 1);
            sel.OutputTextbox(TelTextBox.Text, 2);
            sel.Click("area_tokyo");
            sel.Click("agree");
            Now.Text = "入力完了";
        }
        //None 

    }


    //使っていないメソッド。HTMLを保存するやつ
    private void GetHtml()
    {
        //とりあえずHTMLを保存する処理を実行する
        string html_get_dir = @"C:\Users\ynishino\Desktop\superme\";
        string save_name = "Superme_" + DateTime.Now.ToString("HHmmss") + ".html";
        string filePath = html_get_dir + save_name;
        StreamWriter sw = new StreamWriter(filePath, false, Encoding.UTF8);
        sel.RefreshPage();
        sw.Write(sel.GetPageSource());
        sw.Close();
    }


    private void RunButton_Click(object sender, EventArgs e)
    {
        Now.Text = "実行中";
        SeleniumTimer.Enabled = true;
    }

    private void StopButton_Click(object sender, EventArgs e)
    {
        Now.Text = "待機中";
        SeleniumTimer.Enabled = false;
    }

    private void TextBox4_TextChanged(object sender, EventArgs e)
    {

    }
}

}

Releases

No releases published

Packages

No packages published

Languages