今回のテーマ
下記の記事の続きです。
CHECK
-
-
エラーメッセージ:OpenQA.Selenium.ElementNotInteractableException: element not interactableの解決方法1
Seleniumの操作方法の説明は下記に記述しております。 今回のテーマ element not interactableのエラー解決方法を3つ紹介します 自動化の関連記事はこちら el ...
続きを見る
前回の記事では、下記の3点でエラーを解消できるとお話ししました。
ポイント
- 画面を最大化する。
- スクロールを合わせる。
- 一つのアクション後に一定時間処理を空けてみる。
一つずつ記述してみましょう。今回はDeepl翻訳を例に自動プログラムを組んでみます。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using OpenQA.Selenium; using OpenQA.Selenium.Edge; namespace Selenium { class Program { static void Main(string[] args) { var service = EdgeDriverService.CreateDefaultService(); var options = new EdgeOptions(); var driver = new EdgeDriver(service, options); driver.Navigate().GoToUrl("https://www.deepl.com/ja/translator"); //翻訳前のテキストボックスに記述します。 driver.FindElement(By.XPath("//textarea[@class = 'lmt__textarea lmt__source_textarea lmt__textarea_base_style']")).SendKeys("テスト"); //翻訳言語一覧表示ボタンをクリックします。 driver.FindElement(By.XPath("//span[@class='translate_to']")).Click(); //翻訳言語を選びます。 driver.FindElement(By.XPath("//button[@dl-test='translator-lang-option-it-IT']")).Submit(); } } } |
イタリア語を選択して、テストを翻訳できていると思います。
下記が参照している属性一覧です。
属性一覧
翻訳前のテキストボックス
<textarea class="lmt__textarea lmt__source_textarea lmt__textarea_base_style" data-gramm_editor="false" tabindex="110" dl-test="translator-source-input" autocomplete="off" lang=""></textarea>
訳文ラベルクリック
<span class="translate_to">訳文 </span>
翻訳言語の選択
<button tabindex="99" dl-test="translator-lang-option-it-IT">イタリア語</button>
下記の1行追加したソースコードを実行してみてください。
window.scrollToは、スクロールバーを指定した位置に移動するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using OpenQA.Selenium; using OpenQA.Selenium.Edge; namespace Selenium { class Program { static void Main(string[] args) { var service = EdgeDriverService.CreateDefaultService(); var options = new EdgeOptions(); var driver = new EdgeDriver(service, options); driver.Navigate().GoToUrl("https://www.deepl.com/ja/translator"); //翻訳前のテキストボックスに記述します。 driver.FindElement(By.XPath("//textarea[@class = 'lmt__textarea lmt__source_textarea lmt__textarea_base_style']")).SendKeys("テスト"); //下記のコードを一行追加 driver.ExecuteScript("window.scrollTo(0, 1000)"); //翻訳言語一覧表示ボタンをクリックします。 driver.FindElement(By.XPath("//span[@class='translate_to']")).Click(); //翻訳言語を選びます。 driver.FindElement(By.XPath("//button[@dl-test='translator-lang-option-en-IT']")).Submit(); } } } |
下記のエラーが表示されたと思います。下記のエラーは表示画面に訳文が見つからず、クリック出来なかったことによるエラーです。
command
OpenQA.Selenium.ElementClickInterceptedException
なので、スクロールバーを上に戻してあげましょう。下記を追加してみてください。
1 |
driver.ExecuteScript("window.scrollTo(0, 0)"); |
処理がなおったと思います。
一つのアクション後に一定時間処理を空ける下記のやり方は
System.Threadingを追加し、
Thread.Sleep(1000)のように指定してください。1000は1秒間待つということです。
処理に画面表示が追い付いてない時などに使用すると良いです。
基本的にエラーでつまずいたときは画面に対象の属性が表示されないことがほとんどなので、
エラーでつまずいた時は下記の3つを試してみましょう。
ポイント
- 画面を最大化する。
- スクロールを合わせる。
- 一つのアクション後に一定時間処理を空けてみる。
下記がソースコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
using OpenQA.Selenium; using OpenQA.Selenium.Edge; using System.Threading; namespace Selenium { class Program { static void Main(string[] args) { var service = EdgeDriverService.CreateDefaultService(); var options = new EdgeOptions(); var driver = new EdgeDriver(service, options); driver.Navigate().GoToUrl("https://www.deepl.com/ja/translator"); //翻訳前のテキストボックスに記述します。 driver.FindElement(By.XPath("//textarea[@class = 'lmt__textarea lmt__source_textarea lmt__textarea_base_style']")).SendKeys("テスト"); //スクロールバーを下げる driver.ExecuteScript("window.scrollTo(0, 1000)"); //一秒待つ Thread.Sleep(1000); //最大化 driver.Manage().Window.Maximize(); //スクロールバーを上げる driver.ExecuteScript("window.scrollTo(0, 0)"); //翻訳言語一覧表示ボタンをクリックします。 driver.FindElement(By.XPath("//span[@class='translate_to']")).Click(); //翻訳言語を選びます。 driver.FindElement(By.XPath("//button[@dl-test='translator-lang-option-it-IT']")).Submit(); } } } |

自動化の関連記事はこちら
-
-
合わせて読みたいC# Linqを勉強するならこれだけは読んでほしいオススメの本3選 オススメの参考書
C#を勉強するためのオススメの本を紹介Contents1 C#を勉強するためのオススメの本を紹介1.1 C#の基礎を学ぶなら「やさしいC#」1.2 C#の全体像を学ぶなら「独習C#」1.3 C#をさら ...
続きを見る