シャドウ DOM 要素の移動と操作は、Web 自動化において常に課題となってきました。この記事では、このプロセスを簡素化する Selenium 4 で導入された最新のソリューションについて説明します。
Shadow DOM は、カプセル化された DOM ツリーを作成するために使用される Web 開発手法です。メインのドキュメント ツリーからは非表示になります。これらの要素は、パフォーマンスの最適化とモジュール化によく使用されます。ただし、その不明瞭さにより、findElement などの従来の Selenium メソッドを使用して対話するのが困難になる可能性があります。
Selenium 4 では、WebElement と呼ばれる新しいメソッドが導入されています。 getShadowRoot() を使用すると、Shadow DOM 要素との直接対話が可能になります。このメソッドは、Shadow DOM のルート要素を返します。これを使用して、さらに移動して、その中の子要素を見つけることができます。
と対話するにはShadow DOM 要素の場合は、次の構文を使用できます:
driver.findElement(By.id("parentId")).getShadowRoot().findElement(By.cssSelector("label")).findElement(By.tagName("input"));
この例では、まずシャドウ DOM の親要素を見つけてから、getShadowRoot() を使用してシャドウ ルートにアクセスします。そこから、標準の Selenium メソッドを使用して、Shadow DOM 内の特定の子要素を見つけることができます。
シャドウルートは制限されています。たとえば、シャドウ ルート内で By.id() または By.tagName() を使用すると、InvalidArgumentException が発生する可能性があります。 By.cssSelector() と By.className() は引き続き有効なオプションです。
以上がSelenium 4 は Shadow DOM 要素の自動化をどのように簡素化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。