by.cssContainingText
implementationを見ると、まず、CSSセレクタですべての要素を見つけて、一致する要素のテキストに目的の文字列が含まれているかどうかを確認します。
当社は、独自のカスタムロケータを作成するために、Pythonで同じロジックを模倣することができます。
def by_css_containing_text(driver, selector, text):
elements = driver.find_elements_by_css_selector(selector)
return [element for element in elements
if text in (element.text or
element.get_attribute("textContent") or
element.get_attribute("innerText"))]
# usage
driver = webdriver.Firefox()
driver.get(url)
elements = by_css_containing_text(driver, '#myid .myclass', 'Some Text')
self.assertTrue(elements)
self.assertTrue(elements[0].is_displayed())
我々は直接querySelectorAll
を使用しますがCSSセレクタの検索を行っていないので、これは分度器のようにまったく同じ考え方ではないがありますPython/Seleniumの "find"関数を使用します。
textContent
とinnerText
の値をチェックする必要があるかどうかもわかりません。「テキスト」を確認するだけで十分です。
css:containsを実装する簡単な方法はありましたか?シンプルなCSSのために非常に複雑です:テキストメソッドを含んでいます。 // a [contains(text()、 "Log Out")]は単純なものとして非常に綺麗に見えます:contains( 'Log Out')はうまくいきません。 –
質問の回答方法は次のとおりです:12月30日16時5:21? –