如何在Python Selenium中加载页面

时间:2016-03-21 02:22:04

标签: python selenium

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>

1 个答案:

答案 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>