Selenium でのシャドウ DOM 要素の自動化
Selenium を使用した Web ページの自動化では、シャドウ DOM 要素を操作する際に、カプセル化が原因で課題が発生することがよくあります。メイン DOM。この記事では、Selenium 4 で新しく導入された WebElement.getShadowRoot() メソッドを使用して、この障害を克服する解決策について説明します。
これまでのアプローチと制限
Selenium 4 より前では、開発者は、シャドウ要素にアクセスするためにディープ CSS または JS Executor メソッドに依存していました。ただし、ディープ CSS は Chrome ブラウザの最新バージョンと互換性がなく、JS Executor を広範囲に使用するには保守が面倒で複雑になります。
Selenium 4 の解決策: getShadowRoot()
Selenium 4 では、WebElement.getShadowRoot() メソッドは要素のシャドウ DOM への直接アクセス ポイントを提供します。これにより、複雑な回避策の必要性がなくなり、より一貫性のある効率的な対話アプローチが提供されます。
使用例
Shadow DOM 内にネストされた要素を取得するには、次の構文:
driver.findElement(By.id("parentId")).getShadowRoot().findElement(By.cssSelector("label")).findElement(By.tagName("input"))
この例では、「parentId」は、次の要素を含む親要素の ID を表します。シャドウ ルート、「label」と「input」はそれぞれ、目的のネストされた要素の CSS セレクターとタグ名を表します。
getShadowRoot() の制限
WebElement.getShadowRoot() はシャドウ DOM へのアクセスを提供しますが、いくつかの制限があることに注意することが重要です。たとえば、特定のロケーター戦略のみがサポートされます。たとえば、Chrome では、By.cssSelector() と By.className() をシャドウ DOM 内で使用できますが、By.id() と By.tagName() を使用すると InvalidArgumentException が発生します。
以上がSelenium 4 の「getShadowRoot()」メソッドはどのようにして Shadow DOM 要素の自動化を簡素化できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。