我经常需要等待一个AJAX调用,在完成加载后在我的页面上的元素中添加文本。我理解如何使用WebDriverWait等待元素中存在特定文本,但我不知道如何等待任何文本存在。我试图避免使用while循环来检查元素的文本是不是== ''
。
这是我用来查找特定文字的内容:
try:
WebDriverWait(self.driver, 10).until(EC.text_to_be_present_in_element((By.ID, 'myElem'), 'foo'))
except TimeoutException:
raise Exception('Unable to find text in this element after waiting 10 seconds')
有没有办法检查任何文字或非空字符串?
答案 0 :(得分:11)
您可以使用By.XPATH
并检查xpath表达式中text()
是否为非空:
EC.presence_of_element_located((By.XPATH, '//*[@id="myElem" and text() != ""]'))
仅供参考,我在这里使用presence_of_element_located()
:
期望检查元素是否存在于DOM的DOM上 页。这并不一定意味着该元素是可见的。
完整代码:
try:
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="myElem" and text() != ""]')))
except TimeoutException:
raise Exception('Unable to find text in this element after waiting 10 seconds')