try:
next_page_elem = self.browser.find_element_by_xpath("//a[text()='%d']" % pageno)
except noSuchElementException:
break
print('page ', pageno)
next_page_elem.click()
sleep(10)
我有一个页面包含有关框架内报告的信息。当我使用睡眠方法等待下一页加载它的工作,没有它我一直得到第1页上的信息。除了睡眠之外,在硒中更好地做到这一点。我已尝试过一些类似的帖子,但我认为我的html非常独特,请参阅下面的示例。 Selenium Python: how to wait until the page is loaded?任何帮助我都会非常感激。感谢
<html>
<div class="z-page-block-right" style="width:60%;">
<ul class="pageingclass">
<li/>
<li>
<a class="on" href="javascript:void(0)">1</a>
</li>
<li>
<a onclick=" gotoPage('2','2')" href="javascript:void(0)">2</a>
</li>
<li>
<a class=" next " onclick=" gotoPage('2','2')" href="javascript:void(0)"/>
</li>
</ul>
</div>
</html>
答案 0 :(得分:4)
请参阅此元素:
<a class="on" href="javascript:void(0)">1</a>
据我所知,这基本上意味着我们目前所处的页面。
由于我们事先知道了页码,所以想法是wait,直到具有当前页码的元素出现:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
try:
next_page_elem = self.browser.find_element_by_xpath("//a[text()='%d']" % pageno)
except noSuchElementException:
break
print('page ', pageno)
next_page_elem.click()
# wait for the page to load
wait.until(
EC.presence_of_element_located((By.XPATH, "//a[@class = 'on' and . = '%d']" % pageno))
)
其中//a[@class = 'on' and . = '%d']
是一个XPath表达式,它将a
个元素与class="on"
匹配,文本等于我们通过字符串格式化粘贴到表达式中的页码。< / p>