Seleniumでid属性の指定されていない要素を取得する
やりたいこと
Selenium WebDriverを使って画面の要素を指定する際に、id属性が指定されていない場合はどうやってその要素を取得するか?という話です。ChromeでYahooの検索キーワードに任意のワードを指定し検索ボタンを押下する、というのを例に見てみます。
まず、検索キーワードを入力するテキストボックスにはname属性(name="p")が指定されているので、以下のようにそれを利用します。
検索キーワードがゆりあんレトリバーなのは、YouTubeでゆりあんレトリバーの動画を見ながら本記事を書いているので何となくそうしてます。
webDriver.findElement(By.name("p")).sendKeys("ゆりあんレトリバー");
このような場合は、XPathが利用できます。XPathはChromeのデベロッパーツールから確認、コピーできます。
コードは以下の通りです。
webDriver.findElement(By.xpath("//*[@id=\"ContentWrapper\"]/header/section[1]/div/form/fieldset/span/button/span/span")).click();
まとめ
ソースはこんな感じです。
public class SampleScript {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\Development\\selenium\\chromedriver.exe");
WebDriver webDriver = new ChromeDriver();
webDriver.get("https://www.yahoo.co.jp/");
webDriver.findElement(By.name("p")).sendKeys("ゆりあんレトリバー");
webDriver.findElement(By.xpath("//*[@id=\"ContentWrapper\"]/header/section[1]/div/form/fieldset/span/button/span/span")).click();
}
}
ちなみに、上記ではあえて最後にブラウザを閉じていませんが、webDriver.quit();とすること、ブラウザを閉じることができます。
quitメソッドを呼び出すことで、WebDriverインスタンスから生成された全てのブラウザが閉じ、そのブラウザのDriverプロセスも終了します。逆に言うと、quitメソッドを呼び出さないとそれらのプロセスも残ったままとなってしまうので注意が必要です。
Author And Source
この問題について(Seleniumでid属性の指定されていない要素を取得する), 我々は、より多くの情報をここで見つけました https://qiita.com/NagaokaKenichi/items/7a111467dcae3354048d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .