我想从包含多页文章列表的网页中提取文章标题。
我使用以下方法在首页上获得文章标题:
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
的{{3}}中,但是以下代码(EC.not()
部分)在Python中无效,并引发SyntaxError:>
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中的元素中没有文本?
答案 0 :(得分:1)
您可以这样等待
@{
ICommonPageViewModel cvm = (ICommonPageViewModel)this.Model;
}
<html>
<head>
<style type="text/css">
body {
}
body.foobar {
background-image: url("@Url.Content("~/images/somepic.jpg")");
background-position: 0 0;
background-repeat: no-repeat;
}
</style>
@RenderSection("head")
</head>
<body class="@( cvm.BodyClass )">
@RenderBody()
</body>
但是看起来很奇怪,但是它将等待直到找到该元素,否则循环将继续