【发布时间】:2017-09-18 23:44:32
【问题描述】:
这个问题之前可能已经被问过,但我似乎无法追踪它的位置......但是,我正在尝试找到一种方法来选择屏幕上具有相同“resource-id”的元素另一个元素,但不是通过定位两个元素然后选择第二个元素,例如,因为它们并不总是在屏幕上。此外,我不能只将 XPATH 与 Class + Text 一起使用,因为元素的 Text 可以/将会改变。我想知道是否有一种方法可以在元素的“文本”中使用资源 ID 和特定字符串(我知道不会更改的字符串)。或者可能使用 XPATH 和 Class + 'text' 包含一些子文本,例如,
get_code = WebDriverWait(self.driver, 3).until(
EC.element_to_be_clickable((By.XPATH, "//android.widget.TextView[@text.contains='differentiatable sub-string']")))
element.click()
附加的图片显示了我需要能够区分的元素之一。另一个元素(未图示)具有相同的属性,但“Text”和“Package”除外。
我试过了
element = WebDriverWait(self.driver, 3).until(
EC.text_to_be_present_in_element((By.ID, "android:id/big_text"), "validation"))
element.click()
“validation”是一个允许我区分的子字符串(它包含在第二个元素中,并且该字符串始终存在),但这会失败,因为您不能“单击”True 或错误:)
【问题讨论】:
-
我认为 element = WebDriverWait(self.driver, 3).until( EC.text_to_be_present_in_element((By.ID, "android:id/big_text"), 'validation')) element.click( ) 可能有效,但我有同样的问题...'AttributeError: 'bool' object has no attribute 'click'
标签: python python-2.7 selenium appium