【问题标题】:How to wait a page is loaded in Python Selenium如何在 Python Selenium 中等待页面加载
【发布时间】:2016-03-21 10:55:03
【问题描述】:
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 页上获取信息。除了睡眠之外,在 selenium 中还有更好的方法。我已经尝试过一些类似的先前帖子,但我认为我拥有的 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>

【问题讨论】:

  • 当您从一个页面转到另一个页面时,页面 URL 是否会发生变化 - 如果是,您能否提供这些 URL?谢谢。
  • 不幸的是它没有改变。
  • 当您从一个页面转到另一个页面时会发生什么变化?页面标题或任何其他元素?
  • 有时间戳用新时间戳刷新
    上次刷新时间:13:33:50 AEDT 刷新

标签: python selenium


【解决方案1】:

看到这个元素:

<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" 以及等于我们通过字符串格式粘贴到表达式中的页码的文本。

【讨论】:

  • 你是个传奇。你的代码已经工作了。可以请解释一下在课堂上做什么和做什么。 "//a[@class= 'on' and .='%d']" 再次感谢。
  • @RicardLe 当然,更新了答案并包含了一些解释。另请查看答案是否可以标记为已接受以解决该主题。谢谢!
  • 嗨,我使用带有以下 //a[@class= 'on' = 2] 的 fireFox FirePath,它选择了正确的路径。谢谢
猜你喜欢
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 2016-10-13
  • 1970-01-01
  • 2018-11-26
  • 1970-01-01
  • 2011-08-17
相关资源
最近更新 更多