Pycharm 评估表达式和实际执行不同
Pycharm evaluate expression and actual execution are different
我正在使用 中的代码尝试使用无头浏览器获取网站的 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 个元素的列表。
看起来评估器和代码中的实际命令执行不同,或者赋值不顺利。
如有任何帮助,我将不胜感激。
谢谢!
我怀疑它会打印 []
,因为所需的 class 元素未加载到 DOM
中,当您使用计算器时,它可能会等到完整的 [=12= 】 更新完成。这就是在后一种情况下 returns 匹配给定 class.
的元素的方式
尝试在脚本中添加睡眠调用
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 进行评估。
我正在使用
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 个元素的列表。
看起来评估器和代码中的实际命令执行不同,或者赋值不顺利。
如有任何帮助,我将不胜感激。 谢谢!
我怀疑它会打印 []
,因为所需的 class 元素未加载到 DOM
中,当您使用计算器时,它可能会等到完整的 [=12= 】 更新完成。这就是在后一种情况下 returns 匹配给定 class.
尝试在脚本中添加睡眠调用
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 进行评估。