🎉
SeleniumとかでCSS指定ではなくテキストの値を条件に要素を取得したい
例えばこんな要素があったとして、
<div class="hoge">Hello<div>
このdiv
をCSS指定ではなく「テキストが"Hello"であること」という条件で取得したい。どうすれば良いのかしばらく悩んだ結果、CSS SelectorではなくXPathを使えばできることに気づいた。
div[text()="Hello"]
これでいけます。text()
以前の部分では絞り込めるだけ絞り込んでおきましょう。
Selenium Webdriverならこんな感じ。
driver.find_element(By.XPATH, '//div[text()="Hello"]')
生のJSだとquerySelector
がxpathに対応していないため、document.evaluate()
を使う必要がある。Puppeteerなら$x
。使い方がちょっとややこしいのでMDNを頑張って読みましょう。
参考:
Discussion