【问题标题】:How to get updated html data without refreshing the page selenium如何在不刷新页面硒的情况下获取更新的html数据
【发布时间】:2018-02-06 15:45:54
【问题描述】:

我正在使用 selenium python,我试图获取一个在我向下滚动页面时添加的元素,当你向下滚动时加载 youtube 评论框。然而,找到元素的方法都没有奏效,因为在我看来 selenium 不知道更新的数据。我尝试过使用睡眠、隐式和显式等待,但这也无济于事。

<textarea id="textarea" class="style-scope iron-autogrow-textarea" rows="1" autocomplete="off" required="" maxlength="10000"></textarea>

这是添加的代码。

有什么方法可以让 selenium 在添加 html 之前不存储它?或者如何告诉 selenium 页面上有一个新元素?

我正在使用 chromedriver,如果有帮助的话。

【问题讨论】:

    标签: python html selenium selenium-chromedriver


    【解决方案1】:
    from selenium.webdriver.support.wait import 
    WebDriverWaitWebDriverWait(driver, 60).until(lambda x: x.find_element_by_xpath('//*[@id="textarea"]'))
    

    【讨论】:

    • 您能否解释一下为什么要等待 60 秒?以及如何使用元素?
    • 60 秒可能太长了,您可以选择一个较短的时间以防止您请求的页面不包含该元素。使用元素,有很多 selenium-webdriver 的 API,find_element_by_name,find_element_by_tag,find_element_by_xpath 等。我经常使用 selenium scrapy 一些复杂的页面,所以最常用的方法 find_element_by_xpath 是我最好的选择。
    • 我试过了,elem = WebDriverWait(driver, 15).until(lambda x: x.find_element_by_xpath('//*[@id="textarea"]')) 它引发了超时异常,我在使用这个等待之前向下滚动了页面,对吗?
    • 对不起,我误解了你的意思。你可以使用这个 js="var q=document.documentElement.scrollTop=100000" driver.execute_script(js) 这些代码让 webbroser 执行 js 来滚动。
    • 您好,谢谢,但我使用driver.execute_script("window.scrollTo(0, 880)") 来做到这一点,但这不是主要问题,它的 webdriverwait 没有正常工作。
    【解决方案2】:

    这取决于您的应用程序。如果您的应用程序使用 AXAX,那么您将获得页面和 DOM 上的更新数据。 Selenium 只能访问您当前的 DOM,因此如果您的应用程序没有此类 AXAX 调用,那么您必须引用该页面。

    【讨论】:

      猜你喜欢
      • 2023-02-26
      • 1970-01-01
      • 2011-06-15
      • 2018-03-24
      • 2014-08-18
      • 1970-01-01
      • 2019-10-03
      • 2022-11-27
      • 2017-06-13
      相关资源
      最近更新 更多