Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium:等待文本不出现在元素中_Python_Python 3.x_Selenium_Selenium Webdriver - Fatal编程技术网

Python Selenium:等待文本不出现在元素中

Python Selenium:等待文本不出现在元素中,python,python-3.x,selenium,selenium-webdriver,Python,Python 3.x,Selenium,Selenium Webdriver,我想从包含多页文章列表的网页中提取文章标题 我使用以下方法在第一页获取文章标题: titles = browser.find_elements_by_xpath(r'path') for i in range(len(titles)): titles_list.append(titles[i].text) next_page = browser.find_element_by_xpath(r'path') next_page.click() 我使用以下命令导航到下一页: titles

我想从包含多页文章列表的网页中提取文章标题

我使用以下方法在第一页获取文章标题:

titles = browser.find_elements_by_xpath(r'path')
for i in range(len(titles)):
    titles_list.append(titles[i].text)
next_page = browser.find_element_by_xpath(r'path')
next_page.click()
我使用以下命令导航到下一页:

titles = browser.find_elements_by_xpath(r'path')
for i in range(len(titles)):
    titles_list.append(titles[i].text)
next_page = browser.find_element_by_xpath(r'path')
next_page.click()
然后,我返回到第一步(即获取文章标题)


问题是,使用上述代码,我有时会两次获得一页的文章标题,有时会错过一页的文章标题

我认为解决方案是在第二步之后、重复第一步之前等待页面完全加载:我应该在变量(例如“first_item”)中存储第一页特有的内容(例如第一篇文章的标题),并且应该等待相应的元素不包含该文本


我找到了问题的答案,但其中使用了
ExpectedConditions.not
,但以下代码(EC.not()部分)在Python中无效,并引发语法错误:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

next_page.click()
wait = WebDriverWait(browser, 10)
wait.until(EC.not(EC.text_to_be_present_in_element((By.XPATH, r'path'), first_item)))
我怎样才能等到Python中的某个元素中没有文本呢?

您可以这样等待


element = WebDriverWait(driver, 6).until_not(EC.element_to_be_clickable((By.XPATH, 'xpath')))

while element == True:
    try:
        element.click()
    except:
        pass

然而,它看起来很奇怪,但它会等到找到元素后再运行,否则循环将继续

请您提及URL和您的代码,以便轻松解决问题。您可以提供HTML代码吗?问题是元素名称相同(仅内容更改),并且始终可以单击(甚至在联系人更改完成之前),所以我仍然使用
EC.element\u to\u be\u clickable()
得到错误的结果。
.until\u not()
解决了我的问题!