Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9707

C#でSeleniumのTips

$
0
0

よく使うC#のSeleniumについてメモ書きします。

参照

hoge.cs
usingOpenQA.Selenium;usingOpenQA.Selenium.Chrome;usingOpenQA.Selenium.Support.UI;usingOpenQA.Selenium.Interactions;

chromeドライバーのお作法

hoge.cs
privatevoidForm1_Load(objectsender,EventArgse){//ChromeDriverを設定するChromeDriverdriver=Selenium();// URLに移動します。driver.Navigate().GoToUrl(@"https://zozo.jp/");//Chromeドライバー終了処理SeleniumEnd(driver);}#region ChromeDriver設定
privateChromeDriverSelenium(){ChromeDriverServiceservice=ChromeDriverService.CreateDefaultService();varoptions=newChromeOptions();//ブラウザ非表示if(CB_ChromeDisp.Checked==false){service.HideCommandPromptWindow=true;options.AddArgument("--headless");options.AddArgument("--no-sandbox");options.AddArgument("--window-position=-32000,-32000");options.AddArgument("--user-agent=hogehoge");}ChromeDriverdriver=newChromeDriver(service,options);returndriver;}#endregion
#region ChromeDriver終了処理
privatevoidSeleniumEnd(ChromeDriverdriver){driver.Quit();}#endregion

色々な操作の仕方

hoge.cs
IWebElementelement=driver.FindElement(By.Id("btnNext"));IWebElementelement=driver.FindElement(By.XPath("hogehoge"));IWebElementelement=driver.FindElement(By.ClassName("CheckExpand__label"));IWebElementelement=driver.FindElement(By.Name("Description_plain_work"));//複数取得してループで回す処理List<IWebElement>elements=driver.FindElements(By.ClassName("p-goods-add-cart__color")).ToList();foreach(IWebElementeleinelements){Console.WriteLine(ele.Text);}//チェックボックスを選択する場合はSpaceを送るIWebElementelement=driver.FindElement(By.ClassName("CheckExpand__label"));element.SendKeys(OpenQA.Selenium.Keys.Space);//ドロップダウンIWebElementelement=driver.FindElement(By.Name("istatus"));varselectElement=newSelectElement(element);selectElement.SelectByIndex(3);//クリックは.Click()では動作しない場合もあるelement=driver.FindElement(By.Id("aucHTMLtag"));element.SendKeys(OpenQA.Selenium.Keys.Return);//もしくはKeys.Enter
hoge.cs
List<IWebElement>elements=driver.FindElements(By.CssSelector("#list01 h3")).ToList();//URLリストを定義するList<string>url_list=newList<string>();// 記事のタイトルをコンソールに表示foreach(IWebElementeleinelements){//urllsc_yoku_listdata_rec.Yoku_itemurl=ele.FindElements(By.TagName("a"))[0].GetAttribute("href");//Console.WriteLine(lsc_yoku_listdata_rec.Yoku_itemurl);         // アドレス//urlを配列に代入するurl_list.Add(lsc_yoku_listdata_rec.Yoku_itemurl);}//リストを配列に載せ替えるurl_arr=url_list.ToArray();//配列のカウントurl_count=url_arr.Count();//カウントinti=0;//URLを取出して個別ページの処理を行うforeach(stringurlinurl_arr){// ループ処理の途中にキャンセルされたかを確認するif(MainBackgroundWorker.CancellationPending){//キャンセルされてた場合の処理e.Cancel=true;return;}lsc_yoku_listdata_rec.Yoku_itemurl=url;driver.Navigate().GoToUrl(url);driver.Manage().Timeouts().ImplicitWait=TimeSpan.FromSeconds(3);try{driver.FindElement(By.CssSelector("#js-prMdl-close")).Click();}catch{}//List<IWebElement> detail_elements = driver.FindElements(By.CssSelector("#pageTop")).ToList();//var doc=driver.PageSource;// htmlファイルを読み込む//var html = File.ReadAllText(driver.PageSource, System.Text.Encoding.UTF8);// HTMLParserのインスタンス生成varparser=newHtmlParser();// htmlをパースするvardoc=parser.ParseDocument(driver.PageSource);// idを指定してElement取得vardetail_element=doc.GetElementById("pageTop");item_detail(detail_element);i++;// マルチスレット対応してテキストボックスを操作Invoke(newAction<string>(status_mess),i+" / "+url_count+"件取得済み");}

Viewing all articles
Browse latest Browse all 9707

Trending Articles