私はセレンを学んでいて、XPATHをよく理解しています。セレン - XPATH - innerHTMLで要素を探す
ウェブページには、動的に生成されたid
とclass
の要素があります。私は以下を試しました:
code = driver.find_element_by_xpath("//*[contains(@text='someUniqueString')]")
ただし、要素にはテキストがありません。代わりに、JSONを持つ<code>
要素です。
<codestyle="display: none" id="something-crazy-dynamic">
{"dataIWantToGrab":{"someUniqueString":...}}
</code>
は、私は何を探していることはXPATHを使用して一意の文字列を検索しinnerHTML
を検索するが、私は何か良いリソースを見つけることができないです。
私は
driver.find_element_by_xpath("//*[contains(@innerHTML='someUniqueString')]")
を試してみたが、エラー
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: //*[contains(@innerHTML='someUniqueString')]
EDIT受け付けております。以下は、私が
https://gist.github.com/anonymous/b227e59c942e7ec9f5a851a3b7ecdfc6
で働いている兄弟のテキストへのリンクですEDIT 2:これを回避することはできましたが、SeleniumではなくBeautifulSoup 。理想的ではありませんが、まだ解決策です。
//*[text()[contains(., 'someUniqueString')]]
以上:あなたは内側のHTMLで一致したXPathを使用することはできませんが、 '内部テキスト' で一致するために使用することができ
soup = BeautifulSoup(driver.page_source)
codes = soup.find_all("code")
found_json = [i for i in codes if i.text.find("someUniqueString") > 0]
「id」の一部は定数であるか、それともすべて動的ですか? – Guy
一定の部分がありますが、約15の要素が同じ命名規則を持っています – kmomo
親、子、兄弟に依存することができます。関連するHTMLコード(要素の上下5要素)を共有してください。 –