Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
seleniumを入れたらキーイベントがおかしくなりました。
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30790#CommentId85421
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2022/8/19 11:13:26
この問題は、
If e.KeyCode = Keys.Enter Then
が、
If e.KeyCode = System.Windows.Forms.Keys.Enter Then
If e.KeyCode = OpenQA.Selenium.Keys.Enter Then
のいずれの意味で解釈されるのか…という話です。
どちらに解釈されるかは曖昧ですが、今回のケースでは、
System.Windows.Forms 名前空間は「プロジェクトのプロパティの参照タブ」で
プロジェクト全体に対してインポートされた物であるのに対し、
OpenQA.Selenium 名前空間は、Form1.vb ファイル限定のインポートなので
OpenQA.Selenium 側の方が優先度が高くなった結果生じた問題です。
e.KeyCode の型は System.Windows.Forms.Keys 列挙型なので、「数値」の一種です。
一方、OpenQA.Selenium.Keys.Enter は String 型であり、値は ChrW(&HE007) です。
https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/src/webdriver/Keys.cs#L65-L68
※ちなみに E007 は Unicode で定義されていない無効文字です。
If e.KeyCode = Keys.Enter Then
において、左辺は列挙値なので、「数値」の一種となり、
それを右辺の文字列と比較しようとしているものと解釈されています。
Option Strict On の場合は、コンパイルエラーとして
BC30512「Option Strict On では 'String' から 'Double' への暗黙的な変換は許可されていません。」
となるでしょう。
Option Strict Off の場合は、実際に実行された時に検出されて
「System.InvalidCastException: 'String "" から型 'Double' への変換は無効です。」
の例外が発生します。