Python 选择包含特定文本的webelement

Python 选择包含特定文本的webelement,python,python-2.7,selenium,selenium-webdriver,appium,Python,Python 2.7,Selenium,Selenium Webdriver,Appium,我有多个具有相同资源id的元素(它们不同时出现在屏幕上),因此我需要能够根据它们包含的文本来选择它们。但是,部分文本偶尔会发生更改,对于每个元素,只会持续显示一小串文本。那么,在需要的时候,我如何选择每个元素呢?我试过: 不幸的是,它返回布尔值,因此我无法“单击”它: get_code = WebDriverWait(self.driver, 3).until( EC.text_to_be_present_in_element((By.ID, "android:id/big_te

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

不幸的是,它返回布尔值,因此我无法“单击”它:

    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”),我还没有找到一种方法来实现这一点:

    element = WebDriverWait(self.driver, 3).until(
    EC.element_to_be_clickable((By.ID, "android:id/big_text")))
    element.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()

但我不知道如何格式化它。任何其他建议。谢谢

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

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

目前效果很好…有更好的选择。

试试下面的方法。它应该会起作用。appium客户端的xpath中text()的实现与浏览器的selenium没有什么不同

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

上述两种xpath的不同之处在于所使用的引用类型。

试试以下方法:

driver.find_element_by_name("text")
或者这个:

driver.find_element_by_link_text("text")
driver.find_element_by_partial_link_text('part_of_text')

EC.presence_of_element_位于(By.XPATH,'/*[@id=“android:id/big_text”并包含(text(),“validation”)))TypeError:uu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuelement.click()元素只是没有被单击,没有抛出错误。您可以尝试xpath,这是其他定位器中最好的选择。你可以检查我上面回答中提到的xpath。运气不好。两次抛出都“接受2个参数(3个给定)。”我通过添加另一组括号解决了这个问题,但没有采取任何操作(实际上没有单击任何内容)。。。
driver.find_element_by_name("text")
driver.find_element_by_link_text("text")
driver.find_element_by_partial_link_text('part_of_text')