【问题标题】:Pycharm evaluate expression and actual execution are differentPycharm评估表达式和实际执行不同
【发布时间】:2020-10-02 14:17:05
【问题描述】:

我正在使用来自this topic 的代码尝试使用无头浏览器获取网站的 HTML。 这是我的完整代码:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

binary = r'C:\Program Files\Mozilla Firefox\firefox.exe'
options = Options()
options.add_argument("-headless")
options.add_argument("headless")
options.add_argument("--headless")

options.headless = True
options.binary = binary
cap = DesiredCapabilities().FIREFOX
driver = webdriver.Firefox(options=options, executable_path="C:\\Users\\Aviv\\Downloads\\geckodriverv0.26.0-win64\\geckodriver.exe")#,capabilities=cap)
driver.get("https://coronaupdates.health.gov.il/corona-updates/grid/public-transport")
print(driver.find_elements_by_class_name("mat-row"))

当我只是让代码运行并打印时,结果是一个空列表:[] 但是如果我使用 Pycharm 评估器,我会得到一个包含 20 个元素的列表。

看起来代码中的求值器和实际命令执行的不一样,或者赋值不顺利。

我将不胜感激。 谢谢!

【问题讨论】:

    标签: python selenium pycharm firefox-headless


    【解决方案1】:

    我怀疑它会打印[],因为所需的类元素未加载到DOM 中,并且当您使用评估器时,它可能会等到完整的DOM 更新完成。这就是在后一种情况下它返回与给定类匹配的元素的方式。

    尝试在脚本中添加睡眠调用

    import time
    
    options.headless = True
    options.binary = binary
    cap = DesiredCapabilities().FIREFOX
    driver = webdriver.Firefox(options=options, executable_path="C:\\Users\\Aviv\\Downloads\\geckodriverv0.26.0-win64\\geckodriver.exe")#,capabilities=cap)
    driver.get("https://coronaupdates.health.gov.il/corona-updates/grid/public-transport")
    
    time.sleep(5)   # Delays for 5 seconds.
    print(driver.find_elements_by_class_name("mat-row"))
    

    还要在无头和非无头模式下使用 Explicit vs Implicit wait calls 进行评估。

    【讨论】:

      猜你喜欢
      • 2019-07-19
      • 2021-08-21
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      相关资源
      最近更新 更多