如果您只是想匹配包含字符串的元素,您可以使用它
(注意我喜欢用。而不是text()
做出的XPath有点短。)
此外,我不知道python的API,所以我理所当然的命令是正确的(比其他的XPath)。我熟悉Java。我希望这会有所帮助(但我确实删除了看起来像是一组额外的括号)。
Here's an example of locating Xpath for Android from saucelabs
(与注意包含使用一个,)
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(self.driver, 10)
get_code = wait.until(EC.element_to_be_clickable(By.XPATH, "//TextView[contains(.,'differentiatable sub-string')"])))
element.click()
您可以使用此字符串完全匹配 (请注意,当你想要一个精确匹配使用一=):
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(self.driver, 10)
get_code = wait.until(EC.element_to_be_clickable(By.XPATH, "//TextView[.='differentiatable sub-string')"])))
element.click()
这将文本完全一致,但修剪周围的空白,使用正常化空间(文字())或正常化空间(。): 您可以使用此字符串完全匹配:
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(self.driver, 10)
get_code = wait.until(EC.element_to_be_clickable(By.XPATH, "//TextView[normalize-space(.)='differentiatable sub-string'])))
element.click()
它看起来像以前的Xpaths不工作。您可以尝试以下任意一种: 我没有意识到Android文本是元素的实际属性。所以,你可能需要使用下面的,而不是我在做什么之前:
wait = WebDriverWait(self.driver, 10)
get_code = wait.until(EC.element_to_be_clickable(By.XPATH,"//android.widget.Textview
[@class='android.widget.Textview' and contains(@text,'Charging')"])))
element.click()
或者 等待= WebDriverWait(自我。驱动程序,10) get_code = wait.until(EC.element_to_be_clickable(By.XPATH,“// android.widget.Textview [@ class ='android.widget.Textview'and contains(。,'Charging')”] ))) element.click()
如果没有这些工作
wait = WebDriverWait(self.driver, 10)
get_code = wait.until(EC.element_to_be_clickable(By.XPATH,//FrameLayout[1]//LinearLayout[2]//TextView[1])))
element.click()
或者,您可能需要使用完整的类名(请更正元素名称,如果这些都不是正确的):
wait = WebDriverWait(self.driver, 10)
get_code = wait.until(EC.element_to_be_clickable(By.XPATH,//android.widget.FrameLayout[1]//android.widget.LinearLayout[2]//android.widget.TextView[1])))
element.click()
我以为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没有属性'点击' – cjg123