今回のテーマ
こんにちは、サルモリです!
今回は下記のテーマについて書いていきます。
今回のテーマ
「OpenQA.Selenium.NoSuchElementException」と「OpenQA.Selenium.ElementNotInteractableException」が発生する理由と解決方法
「OpenQA.Selenium.NoSuchElementException」と「OpenQA.Selenium.ElementNotInteractableException」はSeleniumを使う上でどうしても発生してしまいます。
今回はこのエラーの解決方法を書いていきます!
Seleniumを使う環境が整っていない方はこちら
CHECK
-
【2024年2月最新版】C#でMicrosoft Edgeを自動化してみよう
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 まえがき こ ...
続きを見る
Seleniumの操作方法の説明は下記に記述しております。
CHECK
自動化関連の記事はこちらにまとめてあります。
自動化の関連記事はこちら
「OpenQA.Selenium.ElementNotInteractableException」と「OpenQA.Selenium.NoSuchElementException」エラーについて
「OpenQA.Selenium.NoSuchElementException」エラーが発生する理由は
そもそも属性が存在しないよ。
と怒っています 😈
「OpenQA.Selenium.ElementNotInteractableException」エラーが発生してしまう理由は、
属性はあるけど、取得できないよ!
と怒っています 😈
「OpenQA.Selenium.NoSuchElementException」が発生するソースコード例
例として、「OpenQA.Selenium.NoSuchElementException」が出るソースコードを書いてみました。
Deepl翻訳を開くソースコードです。下3行はgoogleの操作を実行しようとしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using OpenQA.Selenium.Edge; namespace Selenium { class Program { static void Main(string[] args) { var driver = new EdgeDriver(EdgeDriverService.CreateDefaultService(@"D:\", "msedgedriver.exe")); driver.Navigate().GoToUrl("https://www.deepl.com/ja/translator"); //下の3行はそのまま driver.FindElementByName("q").SendKeys("yahoo"); driver.FindElementByXPath("//input[@value='Google 検索']").Click(); driver.Close(); } } } |
出力結果
OpenQA.Selenium.NoSuchElementException: 'no such element: Unable to locate element: {"method":"css selector","selector":"*[name="q"]"}
「OpenQA.Selenium.NoSuchElementException」が出力されましたね!!
このエラーが発生する理由は、
Deepl翻訳のホームページ上には、Googleの検索テキストボックスの属性が存在しないからです!
このエラーは正しい属性を指定してあげれば直りますので、修正してあげてください!
このまま、ごり押しても怒られ続けます!諦めて別の属性の指定方法を試しましょう!!
「OpenQA.Selenium.element not interactable」が発生するソースコードの例と解決方法
続けて、「OpenQA.Selenium.element not interactable」が発生するソースコードの例を書いていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using OpenQA.Selenium.Edge; namespace Selenium { class Program { static void Main(string[] args) { var driver = new EdgeDriver(EdgeDriverService.CreateDefaultService(@"D:\", "msedgedriver.exe")); driver.Navigate().GoToUrl("https://www.google.com"); driver.FindElementByName("q").SendKeys("yahoo"); driver.FindElementByXPath("//input[@value='Google 検索']").Click(); } } } |
command
OpenQA.Selenium.ElementNotInteractableException: 'element not interactable'
エラーが発生しました!
このエラーが発生する理由は「Google検索」のボタンが何かしらの理由で画面上に表示されていないのが理由です。
このエラーが発生する場合は、下記の3つの方法を試してみてください。
ポイント
- 画面を最大化する。
- スクロールを合わせる。
- 一つのアクション後に一定時間処理を空けてみる。
今回は1番目の画面を最大化する方法で解決してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using OpenQA.Selenium.Edge; namespace Selenium { class Program { static void Main(string[] args) { var driver = new EdgeDriver(EdgeDriverService.CreateDefaultService(@"D:\", "msedgedriver.exe")); driver.Navigate().GoToUrl("https://www.google.com"); //下の3行はそのまま driver.FindElementByName("q").SendKeys("yahoo"); driver.Manage().Window.Maximize(); //ブラウザを最大化するソースコード driver.FindElementByXPath("//input[@value='Google 検索']").Click(); } } } |
出力結果:yahooの検索画面
エラーが発生せずにyahooの検索画面が表示されました!
これはブラウザを最大化することによって、「Google検索」ボタンがブラウザ上に表示されたからです。
「OpenQA.Selenium.element not interactable」が発生した場合は、焦らずに上記のことを試してみてくださいね!!
まとめ
今回は「OpenQA.Selenium.NoSuchElementException」と「OpenQA.Selenium.ElementNotInteractableException: element not interactable」の解決方法を書いていきました。
エラーの発生理由
エラーがでる理由
- OpenQA.Selenium.NoSuchElementException:指定した属性がそもそも存在しない。
- OpenQA.Selenium.element not interactable:属性が存在するが、ブラウザ上に表示されていない。
解決方法
解決方法
- OpenQA.Selenium.NoSuchElementException:正しい属性を指定してあげる。
- OpenQA.Selenium.element not interactable:下記の3つを試して、ブラウザ上に表示されるようにする。
解決方法
- 画面を最大化する。
- スクロールを合わせる。
- 一つのアクション後に一定時間処理を空けてみる。
今回はSeleniumのエラーについて纏めました。この記事を見て、少しでも役に立てたら光栄です。
最後まで、見て頂きありがとうございました!!
次回の記事
CHECK
-
DeepL翻訳を自動化しながら、Seleniumの「OpenQA.Selenium.ElementNotInteractableException: element not interactable」エラーを対策してみる。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
おすすめの記事
CHECK
-
【C# sharp】 Seleniumで、ポケモン攻略の種族値一覧を取得し、CSVに書き込んでみた。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
自動化の関連記事はこちら