質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

1415閲覧

SeleniumのChromeDriverでの文字列取得処理を高速化したい

yonotsui

総合スコア28

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

1クリップ

投稿2019/06/08 17:13

編集2019/06/08 17:14

SeleniumのChromeDriverで文字列を取得するとき、高速化することはできませんか?
一度に最低4000個のIWebElementのプロパティ「Text」から取得しているのですが、30秒~40秒ほどかかります。
改善方法があったら教えてください。

なお、ヘッドレスのブラウザが必要なのでFireFoxなどのヘッドレス未対応のブラウザは使えません。

C#

1 using OpenQA.Selenium; 2 using OpenQA.Selenium.Chrome; 3 using OpenQA.Selenium.Interactions; 4 using System; 5 using System.Drawing; 6 using System.IO; 7 using System.Linq; 8 class Test 9 { 10 11 public void SpeedTest() 12 { 13 //ドライバの作成 14 var driverService = ChromeDriverService.CreateDefaultService(); 15 var option = new OpenQA.Selenium.Chrome.ChromeOptions(); 16 option.AddArgument("--renderer-process-limit=1"); 17 option.AddArgument("--disable-gpu"); 18 option.AddArgument("--no-sandbox"); 19 option.AddArgument("--disable-flash-sandbox"); 20 option.AddArgument("--disable-infobars"); 21 option.PageLoadStrategy = 0; 22 driverService.HideCommandPromptWindow = true; 23 24 IWebDriver driver = new ChromeDriver(driverService, option); 25 26 //ホームページからIWebElement取得 27 driver.Url = "https://www.yahoo.co.jp/"; 28 var elements = driver.FindElements(By.TagName("a")); 29 IWebElement element = elements.FirstOrDefault(dust => !String.IsNullOrEmpty(dust.Text)); 30 31 //4000回取得 32 DateTime befor = DateTime.Now; 33 for (int idx = 0; idx < 4000; idx++) 34 { 35 String text = element.Text; 36 } 37 var timeSpan = DateTime.Now - befor; 38 } 39 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oikashinoa

2019/06/09 03:05

一つ上位階層の要素を丸ごと取得して、中身を解析する手法は検討しました? 用途的に使えないのであればしょうがないですが。
guest

回答1

0

自己解決

一つ上位階層の要素を丸ごと取得して、中身を解析する手法は検討しました?

コメントありがとうございます。
テーブルタグで制御されたデータだったので、親のTextから取得できました。
アドバイスありがとうございました!

投稿2019/06/09 11:57

yonotsui

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問