2016-03-21 51 views
1
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?任何帮助,我将不胜感激。由于如何在Python中加载页面等待Selenium

<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

页面URL是否会在页面间切换?如果是,您可以提供这些URL吗?谢谢。 – alecxe

+0

不幸的是,它并没有改变。 –

+0

当你从一个页面转到另一个页面时,哪些变量会发生变化?页面标题或任何其他元素? – Rilwan

回答

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元素(S)与class="on"和文本等于我们通过字符串格式粘贴到表达式中的页码。

+0

是的,这是正确的,当前页面在第1页。 –

+0

伴侣你是一个传奇。你的代码已经工作。可以请你解释课堂上正在做什么和正在做什么。 “// a [@class ='on'和。='%d']”再次感谢。 –

+0

@Ricard确定,更新了答案并包含了一些解释。另请参阅答案是否可以标记为接受以解决该主题。谢谢! – alecxe

相关问题