选择包含特定文本的网页元素

2024-04-20 07:54:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有多个具有相同资源id的元素(它们不同时出现在屏幕上),所以我需要能够根据它们包含的文本来选择它们。但是,文本的一部分偶尔会更改,并且对于每个元素,只有一小串文本会不断显示。那么,当我需要的时候,如何选择每个元素呢?我试过:

不幸的是,它返回一个bool值,因此我无法“单击”它:

    get_code = WebDriverWait(self.driver, 3).until(
    EC.text_to_be_present_in_element((By.ID, "android:id/big_text"), 'validation'))
    element.click()

这通常适用于我,但我需要包含contains(text(),'validation'),但我无法找到方法来执行此操作:

^{pr2}$

也许这样的事情会管用?在

    element = WebDriverWait(self.driver, 3).until(
    EC.presence_of_element_located((By.XPATH, '//*[@id="android:id/big_text" and contains(text(), "validation"]')))
    element.click()

但我不知道如何格式化。还有其他建议吗。谢谢!在


Tags: text文本selfid元素bydriverelement
3条回答

试试下面这个。它应该有用。appium客户机xpath中text()的实现与针对浏览器的selenium差别不大。在

EC.presence_of_element_located(By.XPATH, "//*[@id='android:id/big_text' and contains(@text, 'validation')]")

或者

^{pr2}$

上面两个xpath的不同之处只是引用的类型。在

        element = WebDriverWait(self.driver, 3).until(
        EC.presence_of_all_elements_located((By.ID, "android:id/big_text")))
        element[0].click()

就目前而言,效果足够好…可以选择更好的方案。在

上一次尝试中的括号错误,请使用:

element = WebDriverWait(self.driver, 3).until(
EC.presence_of_element_located(By.XPATH, '//*[@id="android:id/big_text" and contains(text(), "validation")]'))
element.click()

相关问题 更多 >