【问题标题】:How do I wait till table is loaded on the webpage如何等到表格加载到网页上
【发布时间】:2020-08-07 15:05:10
【问题描述】:

我必须从this 站点读取数据。 在我们点击页面后几秒钟后,表格会加载。

我正在使用 PYTHON + SELENIUM 代码从表中读取数据,默认延迟为 20 秒,但这太糟糕了,因为数据是动态的,我想优化到一旦表是已加载,我应该能够阅读和处理它。

为此,我尝试使用以下代码等到时间元素(id-equity_timeStamp)被加载:

myElem = WebDriverWait(webdriverFire, 3).until(EC.presence_of_element_located((By.ID,'equity_timeStamp')))

但是即使这个元素的存在也不能保证数据的存在(如上只检查元素的存在而不是其中的文本)。我也想过用EC.text_to_be_present_in_element((By.ID, 'equity_timeStamp')),但是文字不是常数。

我知道我应该等待一些东西,但所有有用的东西都有动态文本。

【问题讨论】:

  • 请尝试EC.presence_of_element_located((By.XPATH,'//*[@id="equity_timeStamp" and text()!=""]'))

标签: python selenium web-crawler selenium-firefoxdriver


【解决方案1】:

您也可以尝试使用implicit wait 方法。当网页上的某些元素不能立即可用并且需要一些时间来加载时,这可能很有用。您可以查看 selenium 文档。关于在这里等https://www.selenium.dev/documentation/en/webdriver/waits/

【讨论】:

    【解决方案2】:

    您可以尝试 visibility_of_element_located,因为 presence_of_element_located 不能保证元素的可见性

    【讨论】:

      【解决方案3】:

      要访问equity table,请使用visibility_of_element_located() 和以下css 选择器。

      WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.CSS_SELECTOR,"table#optionChainTable-indices"))) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多