SeleniumによるHTML要素の指定

要素の特定に使用するメソッド

Seleniumで要素を特定するにはFindElementFindElementsを使用します。
これらメソッドの引数としてBy.xxxを検索条件として指定します。
もし指定した検索条件で要素が見つからない場合は、OpenQA.Selenium.NoSuchElementExceptionが発生します。

FindElementは、指定した条件に最初に見つかった要素を1つ取得します。

						//C#
						var element = driver.FindElement(By.CssSelector("#animal .tiger"));
					

FindElementsは、指定した条件に一致するすべての要素を取得します。
見つかった場合は要素のコレクションが返却され、見つからない場合は空のコレクションが返却されます。

						//C#
						IReadOnlyList<IWebElement> elements = driver.FindElements(By.TagName("li"));

						//コレクションの中から要素を特定する場合
						foreach(IWebElement e in elements) {
							Console.WriteLine(e.Text);
						}
					

要素の下に属する要素を取得できます。

						//C#
						IWebElement element = driver.FindElement(By.TagName("div"));

						IList<IWebElement> elements = element.FindElements(By.TagName("li"));
						foreach(IWebElement e in elements) {
							Console.WriteLine(e.Text);
						}
					

参考

id属性を指定して要素にアクセス

id属性を指定して要素のオブジェクトを取得する方法です。

実装方法

By.Id()メソッドに取得したい要素のid属性名を指定します。

//C#書式
var element = _browser.FindElement(By.Id("id名"));
IList<IWebElement> elements = _browser.FindElements(By.Id("id名"));

サンプル

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Private Sub btnId_Click(sender As Object, e As EventArgs) Handles btnId.Click
					
							'idを指定して要素を取得。文字を入力。
							Dim element = _browser.FindElement(By.Id("inputid2"))
							element.SendKeys("テキスト2 all id")
					
						End Sub
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						private void btnId_Click(object sender, EventArgs e)
						{
							//idを指定して要素を取得。文字を入力。
							var element = _browser.FindElement(By.Id("inputid2"));
							element.SendKeys("テキスト2 all id");
						}
					
						from selenium import webdriver
						from selenium.webdriver.common.by import By
						from selenium.webdriver.support.ui import WebDriverWait
						from selenium.webdriver.support import expected_conditions as EC
						from tkinter import messagebox
						
						#Chromeブラウザを表示(環境変数のPATHにドライバーのパスを追加済とする)
						driver = webdriver.Chrome()
						
						#ページを表示
						driver.get("https://web.biz-prog.net/test/testpage.html")
						
						#idを指定して要素を取得。文字を入力。
						element = driver.find_element(By.ID, "inputid2")
						element.send_keys("テキスト2 all id")
					
						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Sub IdElement()
 
							'idを指定して要素を取得。文字を入力。
							Set element = driver.FindElementById("inputid2")
							element.SendKeys "テキスト2 all id"
						
						End Sub
					

name属性を指定して要素にアクセス

name属性を指定して要素のオブジェクトを取得する方法です。

実装方法

By.Name()メソッドに取得したい要素のid属性名を指定します。

//C#書式
var element = _browser.FindElement(By.Name("name名"));
IList<IWebElement> elements = _browser.FindElements(By.Name("name名"));

サンプル

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Private Sub btnName_Click(sender As Object, e As EventArgs) Handles btnName.Click
					
							'nameを指定して要素を取得。文字を入力。
							Dim elements = _browser.FindElements(By.Name("inputname"))
							elements(0).SendKeys("テキスト1 all name 0")
					
						End Sub
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						private void btnName_Click(object sender, EventArgs e)
						{
							//nameを指定して要素を取得。文字を入力。
							var elements = _browser.FindElements(By.Name("inputname"));
							elements[0].SendKeys("テキスト1 all name 0");
						}
					
						from selenium import webdriver
						from selenium.webdriver.common.by import By
						from selenium.webdriver.support.ui import WebDriverWait
						from selenium.webdriver.support import expected_conditions as EC
						from tkinter import messagebox
						
						#Chromeブラウザを表示(環境変数のPATHにドライバーのパスを追加済とする)
						driver = webdriver.Chrome()
						
						#ページを表示
						driver.get("https://web.biz-prog.net/test/testpage.html")
						
						#nameを指定して要素を取得。文字を入力。
						elements = driver.find_elements(By.NAME, "inputname")
						elements[0].send_keys("テキスト1 all name 0")
					
						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Sub NameElements()
						
							'nameを指定して要素を取得。文字を入力。
							Set elements = driver.FindElementsByName("inputname")
							elements(1).SendKeys "テキスト1 all name 0"    '1~
						
						End Sub	
					

class属性を指定して要素にアクセス

class属性を指定して要素のオブジェクトを取得する方法です。

実装方法

By.ClassName()メソッドに取得したい要素のclass名を指定します。

//C#書式
var element = _browser.FindElement(By.ClassName("class名"));
IList<IWebElement> elements = _browser.FindElements(By.ClassName("class名"));

サンプル

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Private Sub btnClass_Click(sender As Object, e As EventArgs) Handles btnClass.Click
					
							'classを指定して要素を取得。文字を入力。
							Dim elements = _browser.FindElements(By.ClassName("inputclass"))
							elements(0).SendKeys("テキスト1 class 0")
					
						End Sub
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						private void btnClass_Click(object sender, EventArgs e)
						{
							//classを指定して要素を取得。文字を入力。
							var elements = _browser.FindElements(By.ClassName("inputclass"));
							elements[0].SendKeys("テキスト1 class 0");
						}
					
						from selenium import webdriver
						from selenium.webdriver.common.by import By
						from selenium.webdriver.support.ui import WebDriverWait
						from selenium.webdriver.support import expected_conditions as EC
						from tkinter import messagebox
						
						#Chromeブラウザを表示(環境変数のPATHにドライバーのパスを追加済とする)
						driver = webdriver.Chrome()
						
						#ページを表示
						driver.get("https://web.biz-prog.net/test/testpage.html")
						
						#classを指定して要素を取得。文字を入力。
						elements = driver.find_elements(By.CLASS_NAME, "inputclass")
						elements[0].send_keys("テキスト1 class 0")
					
						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Sub ClassElement()
						
							'classを指定して要素を取得。文字を入力。
							Set element = driver.FindElementByClass("inputclass")  '指定されたクラスに一致する最初の要素が取得される
							element.SendKeys ("テキスト1 class 0")
						
						End Sub	
					

タグ名を指定して要素にアクセス

タグ名を指定して要素のオブジェクトを取得する方法です。

実装方法

By.TagName()メソッドに取得したい要素のclass名を指定します。

//C#書式
var element = _browser.FindElement(By.TagName("タグ名"));
IList<IWebElement> elements = _browser.FindElements(By.TagName("タグ名"));

サンプル

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Private Sub btnTag_Click(sender As Object, e As EventArgs) Handles btnTag.Click
					
							'tagを指定して要素を取得。文字を入力。
							Dim elements = _browser.FindElements(By.TagName("input"))
							elements(0).SendKeys("テキスト1 tag 0")
					
						End Sub
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						private void btnTag_Click(object sender, EventArgs e)
						{
							//tagを指定して要素を取得。文字を入力。
							var elements = _browser.FindElements(By.TagName("input"));
							elements[0].SendKeys("テキスト1 tag 0");
						}
					
						from selenium import webdriver
						from selenium.webdriver.common.by import By
						from selenium.webdriver.support.ui import WebDriverWait
						from selenium.webdriver.support import expected_conditions as EC
						from tkinter import messagebox
						
						#Chromeブラウザを表示(環境変数のPATHにドライバーのパスを追加済とする)
						driver = webdriver.Chrome()
						
						#ページを表示
						driver.get("https://web.biz-prog.net/test/testpage.html")
						
						#tagを指定して要素を取得。文字を入力。
						elements = driver.find_elements(By.TAG_NAME, "input")
						elements[0].send_keys("テキスト1 tag 0")
					
						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Sub TabElements()
						
							'tagを指定して要素を取得。文字を入力。
							Set elements = driver.FindElementsByTag("input")
							elements(1).SendKeys ("テキスト1 tag 0")    '1~
						
						End Sub
					

アンカー要素にアクセス

リンクのテキスト名を指定して要素のオブジェクトを取得する方法です。

実装方法

By.LinkText()メソッドに取得したいリンクのテキストを指定します。

//C#書式
var element = _browser.FindElement(By.LinkText("リンクのテキスト"));
IList<IWebElement> elements = _browser.FindElements(By.LinkText("リンクのテキスト"));

サンプル

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Private Sub btnLink_Click(sender As Object, e As EventArgs) Handles btnLink.Click
					
							'リンクのテキストを指定して要素を取得。クリック。
							Dim element = _browser.FindElement(By.LinkText("リンク1"))
							element.Click()
					
						End Sub

						Private Sub btnLink2_Click(sender As Object, e As EventArgs) Handles btnLink2.Click
					
							'リンクのテキスト(部分一致)を指定して要素を取得。クリック。
							Dim elements = _browser.FindElements(By.PartialLinkText("リンク"))
							elements(1).Click()
					
						End Sub
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						private void btnLink_Click(object sender, EventArgs e)
						{
							//リンクのテキストを指定して要素を取得。クリック。
							var element = _browser.FindElement(By.LinkText("リンク1"));
							element.Click();
						}
				
						private void btnLink2_Click(object sender, EventArgs e)
						{
							//リンクのテキスト(部分一致)を指定して要素を取得。クリック。
							var elements = _browser.FindElements(By.PartialLinkText("リンク"));
							elements[1].Click();
						}
					
						from selenium import webdriver
						from selenium.webdriver.common.by import By
						from selenium.webdriver.support.ui import WebDriverWait
						from selenium.webdriver.support import expected_conditions as EC
						from tkinter import messagebox
						
						#Chromeブラウザを表示(環境変数のPATHにドライバーのパスを追加済とする)
						driver = webdriver.Chrome()
						
						#ページを表示
						driver.get("https://web.biz-prog.net/test/testpage.html")
						
						#リンクのテキストを指定して要素を取得。クリック。
						element = driver.find_element(By.LINK_TEXT, "リンク1")
						element.click()
					
						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Sub LinkElement()
							
							'リンクのテキストを指定して要素を取得。クリック。
							Set element = driver.FindElementByLinkText("リンク1")  '指定されたテキストに一致する最初の要素が取得される
							element.Click
						
						End Sub
					

CSSセレクタによる要素へのアクセス

CSSセレクタを指定することでマッチした要素のオブジェクトを取得する方法です。

実装方法

By.CssSelector()メソッドに取得したい要素のCSSセレクタを指定します。

//C#書式
var element = _browser.FindElement(By.CssSelector("CSSセレクタ"));
IList<IWebElement> elements = _browser.FindElements(By.CssSelector("CSSセレクタ"));

サンプル

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Private Sub btnCss_Click(sender As Object, e As EventArgs) Handles btnCss.Click
					
							'cssを指定して要素を取得。文字を入力。
							_browser.FindElement(By.CssSelector("#inputid2")).SendKeys("bbbb")  'id指定
							_browser.FindElements(By.CssSelector(".inputclass"))(0).SendKeys("aaaa")    'class指定
							_browser.FindElements(By.CssSelector("input[type=""text""]"))(2).SendKeys("cccc")   'type指定
							_browser.FindElements(By.CssSelector(".inputclass"))(4).Click() 'class指定
					
						End Sub
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						private void btnCss_Click(object sender, EventArgs e)
						{
							//cssを指定して要素を取得。文字を入力。
							_browser.FindElement(By.CssSelector("#inputid2")).SendKeys("bbbb"); //id指定
							_browser.FindElements(By.CssSelector(".inputclass"))[0].SendKeys("aaaa");   //class指定
							_browser.FindElements(By.CssSelector("input[type=\"text\"]"))[2].SendKeys("cccc");    //type指定
							_browser.FindElements(By.CssSelector(".inputclass"))[4].Click();   //class指定
						}
					
						from selenium import webdriver
						from selenium.webdriver.common.by import By
						from selenium.webdriver.support.ui import WebDriverWait
						from selenium.webdriver.support import expected_conditions as EC
						from tkinter import messagebox
						
						#Chromeブラウザを表示(環境変数のPATHにドライバーのパスを追加済とする)
						driver = webdriver.Chrome()
						
						#ページを表示
						driver.get("https://web.biz-prog.net/test/testpage.html")
						
						#cssを指定して要素を取得。文字を入力。
						driver.find_element(By.CSS_SELECTOR, "#inputid2").send_keys("bbbb") #id指定
						driver.find_elements(By.CSS_SELECTOR, ".inputclass")[0].send_keys("aaaa")   #class指定
						driver.find_elements(By.CSS_SELECTOR, "input[type=\"text\"]")[2].send_keys("cccc")    #type指定
						driver.find_elements(By.CSS_SELECTOR, ".inputclass")[4].click()   #class指定
					
						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Sub CssElement()
						
							'cssを指定して要素を取得。文字を入力。
							driver.FindElementByCss("#inputid2").SendKeys ("bbbb")  'id指定
							driver.FindElementByCss(".inputclass").SendKeys ("aaaa")   'class指定
							'driver.FindElementByCss("input[type=""text""]").SendKeys ("cccc")  'type指定   最初に見つかったCSSの要素が取得されるため、複数ある場合に2つ目以降にアクセスできない
							'driver.FindElementByCss(".inputclass").Click 'class指定   最初に見つかったCSSの要素が取得されるため、複数ある場合に2つ目以降にアクセスできない
						
						End Sub
					

XPathで要素にアクセス

XPathを指定して要素のオブジェクトを取得する方法です。
※要素のXPathを調べる簡単な方法
 Chromeの開発者ツールで要素を右クリックし、「Copy」->「Copy XPath」で、要素までのXPath文字を取得できます。

実装方法

By.XPath()メソッドに取得したい要素までのXPathを指定します。

//C#書式
var element = _browser.FindElement(By.XPath("XPath"));
IList<IWebElement> elements = _browser.FindElements(By.XPath("XPath"));

サンプル

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Private Sub btnXpath_Click(sender As Object, e As EventArgs) Handles btnXpath.Click
					
							'XPathを指定して要素を取得。文字を入力。
							_browser.FindElement(By.XPath("//*[@id=""inputid1""]")).SendKeys("テキスト1 xpath 0")
							_browser.FindElement(By.XPath("//*[@id=""contents""]/div[2]/form/table/tbody/tr[2]/td/input")).SendKeys("テキスト2 xpath 0")
					
						End Sub
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						private void btnXpath_Click(object sender, EventArgs e)
						{
							//XPathを指定して要素を取得。文字を入力。
							_browser.FindElement(By.XPath("//*[@id=\"inputid1\"]")).SendKeys("テキスト1 xpath 0");
							_browser.FindElement(By.XPath("//*[@id=\"contents\"]/div[2]/form/table/tbody/tr[2]/td/input")).SendKeys("テキスト2 xpath 0");
						}
					
						from selenium import webdriver
						from selenium.webdriver.common.by import By
						from selenium.webdriver.support.ui import WebDriverWait
						from selenium.webdriver.support import expected_conditions as EC
						from tkinter import messagebox
						
						#Chromeブラウザを表示(環境変数のPATHにドライバーのパスを追加済とする)
						driver = webdriver.Chrome()
						
						#ページを表示
						driver.get("https://web.biz-prog.net/test/testpage.html")
						
						#XPathを指定して要素を取得。文字を入力。
						driver.find_element(By.XPATH, "//*[@id=\"inputid1\"]").send_keys("テキスト1 xpath 0")
						driver.find_element(By.XPATH, "//*[@id=\"contents\"]/div[2]/form/table/tbody/tr[2]/td/input").send_keys("テキスト2 xpath 0")
					
						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Sub XPathElement()

							'XPathを指定して要素を取得。文字を入力。
							driver.FindElementByXPath("//*[@id=""inputid1""]").SendKeys ("テキスト1 xpath 0")
							driver.FindElementByXPath("//*[@id=""contents""]/div[2]/form/table/tbody/tr[2]/td/input").SendKeys ("テキスト2 xpath 0")
						
						End Sub
					

form内の要素にアクセス

form内の要素を取得する方法です。
submitの実行が行えます。

実装方法

まずform要素を取得します。
取得したform要素に対して、さらにform内の要素を取得します。

サンプル

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Private Sub btnForm_Click(sender As Object, e As EventArgs) Handles btnForm.Click
					
							Dim formElement = _browser.FindElement(By.Name("testform1"))
							formElement.FindElement(By.Id("inputid2")).SendKeys("テキスト2 id")
							formElement.Submit()
					
						End Sub
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						private void btnForm_Click(object sender, EventArgs e)
						{
							var formElement = _browser.FindElement(By.Name("testform1"));
							formElement.FindElement(By.Id("inputid2")).SendKeys("テキスト2 id");
							formElement.Submit();
						}
					
						from selenium import webdriver
						from selenium.webdriver.common.by import By
						from selenium.webdriver.support.ui import WebDriverWait
						from selenium.webdriver.support import expected_conditions as EC
						from tkinter import messagebox
						
						#Chromeブラウザを表示(環境変数のPATHにドライバーのパスを追加済とする)
						driver = webdriver.Chrome()
						
						#ページを表示
						driver.get("https://web.biz-prog.net/test/testpage.html")
						
						formElement = driver.find_element(By.NAME, "testform1")
						formElement.find_element(By.ID, "inputid2").send_keys("テキスト2 id")
						formElement.submit()	
					
						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Sub FormElement()
						
							Set element = driver.FindElementByName("testform1")
							element.FindElementById("inputid2").SendKeys ("テキスト2 id")
							element.Submit
						
						End Sub
					

iframe内の要素にアクセス

iframe内の要素にアクセスする方法です。
seleniumでiframeにアクセス

実装方法

他の要素取得と同じ方法でiframeのオブジェクトを取得してから、
driverの操作対象をSwitchToメソッドによりiframeのオブジェクトに切り替えます。

サンプル

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Private Sub btnIframe_Click(sender As Object, e As EventArgs) Handles btnIframe.Click
					
							'iframeの要素を特定
							Dim iframe As IWebElement = _browser.FindElement(By.CssSelector("#inline_frame"))
					
							'制御対象をiframeに切り替え
							_browser.SwitchTo().Frame(iframe)
					
							'iframe内の要素を操作
							_browser.FindElement(By.CssSelector("#inputid2")).SendKeys("bbbb")  'id指定
					
						End Sub
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						private void btnIframe_Click(object sender, EventArgs e)
						{
							//iframeの要素を特定
							IWebElement iframe = _browser.FindElement(By.CssSelector("#inline_frame"));
				
							//制御対象をiframeに切り替え
							_browser.SwitchTo().Frame(iframe);
				
							//iframe内の要素を操作
							_browser.FindElement(By.CssSelector("#inputid2")).SendKeys("bbbb");  //id指定
						}
					
						from selenium import webdriver
						from selenium.webdriver.common.by import By
						from selenium.webdriver.support.ui import WebDriverWait
						from selenium.webdriver.support import expected_conditions as EC
						from tkinter import messagebox
						
						#Chromeブラウザを表示(環境変数のPATHにドライバーのパスを追加済とする)
						driver = webdriver.Chrome()
						
						#ページを表示
						driver.get("https://web.biz-prog.net/test/testpage.html")
						
						#iframeの要素を特定
						iframe = driver.find_element(By.CSS_SELECTOR, "#inline_frame")
						
						#制御対象をiframeに切り替え
						driver.switch_to.frame(iframe)
						
						#iframe内の要素を操作
						driver.find_element(By.CSS_SELECTOR, "#inputid2").send_keys("bbbb")  #id指定
					
						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Sub IframeElement()
							
							'iframeの要素を特定
							Set iframe = driver.FindElementByCss("#inline_frame")
						
							'制御対象をiframeに切り替え
							driver.SwitchToFrame (iframe)
						
							'iframe内の要素を操作
							driver.FindElementByCss("#inputid2").SendKeys ("bbbb") 'id指定

						End Sub
					

iframeへの切り替えをnameやidやインデックスで行う

上記のようにFindElementでiframeの要素を取得しなくても、直接nameやidを指定して切り替えることもできます。
インデックスでも指定できます。
SwitchTo().Frame()メソッドで切り替える際に、引数としてnameやidを指定します。
name指定で複数の候補が見つかった場合は先頭のものを使用します。

					//C#
					//id指定
					_browser.SwitchTo().Frame("frameid");

					//name指定
					_browser.SwitchTo().Frame("framename");

					//インデックス指定
					_browser.SwitchTo().Frame(1);
				

iframeのアクセスを終了する

iframeのアクセスを終了して、デフォルトに戻します。
SwitchTo().DefaultContent()メソッドを使います。

					//C#
					_browser.SwitchTo().DefaultContent();
				

参考

iFrame と Frame の操作

shadow-root内の要素にアクセス

shadow-root(open)内の要素にアクセスする方法です。
seleniumでshadow-rootにアクセス

実装方法

まず、他の要素取得と同じ方法でshadow-rootの親となる要素を取得します。
その要素に対してGetShadowRootメソッドを実行することで、shadow-rootの要素が取得できます。

サンプル

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Private Sub btnShadow_Click(sender As Object, e As EventArgs) Handles btnShadow.Click
					
							'shadow-rootの特定
							Dim shadowroot = _browser.FindElement(By.CssSelector("#sr")).GetShadowRoot
					
							'shadow-root内の要素を操作
							shadowroot.FindElement(By.CssSelector("#inputid1")).SendKeys("aaa")  'id指定
					
						End Sub
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						private void btnShadowRoot_Click(object sender, EventArgs e)
						{
							//shadow-rootの特定
							var shadowroot = _browser.FindElement(By.CssSelector("#sr")).GetShadowRoot();
				
							//shadow-root内の要素を操作
							shadowroot.FindElement(By.CssSelector("#inputid1")).SendKeys("aaa");  //id指定
						}
					
						from selenium import webdriver
						from selenium.webdriver.common.by import By
						from selenium.webdriver.support.ui import WebDriverWait
						from selenium.webdriver.support import expected_conditions as EC
						from tkinter import messagebox
						
						#Chromeブラウザを表示(環境変数のPATHにドライバーのパスを追加済とする)
						driver = webdriver.Chrome()
						
						#ページを表示
						driver.get("https://web.biz-prog.net/test/testpage.html")
						
						#shadow-rootの特定
						shadowroot = driver.find_element(By.CSS_SELECTOR, "#sr").shadow_root
						
						#shadow-root内の要素を操作
						shadowroot.find_element(By.CSS_SELECTOR, "#inputid1").send_keys("aaa")  #id指定
					
						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage.html)で
						Sub ShadowElement()

							'SeleniumBasicにはGetShadowRootメソッドがないため、JavaScriptで実装
							driver.ExecuteScript ("document.querySelector('#sr').shadowRoot.querySelector('#inputid1').value = 'aaa';")
						
						End Sub