有一个页面,上面有 4 个相同的元素,但文本请求不同
browser.find_elements_by_xpath("//*[@class='MyClassName']")
一次返回所有 4 个元素。元素仅在文本上有所不同。我知道这段文字的一部分,因为另一部分包含时间和 ID。我可以通过与文本的比较得到它们,但它看起来很糟糕,又长又复杂。
[x for x in browser.find_elements_by_xpath("//*[@class='MyClassName']") if my_text in x.text][0].click()
是否可以通过类名并通过包含文本以某种方式获取元素?我试过了
browser.find_elements_by_xpath( "//*[@class='MyClassName' and [contains(text(),'{}')]]".format(my_text))
但是硒发誓SyntaxError: Failed to execute 'evaluate' on 'Document': The string "//*[@class='MyClassName' and [contains(text(),'Custom')]]" is not a valid XPath expression.问题:如何制作正确的xpath?
我建议循环遍历元素。但如果您根本不喜欢它,那么 SelectorGadget 可以提供帮助。这是 Chrome 的插件。帮助通过 CSS 选择器和 xpath 引用特定元素。