【问题标题】:Headless Chrome not loading page无头 Chrome 未加载页面
【发布时间】:2017-12-21 12:43:10
【问题描述】:

Headless Chrome 无法加载页面并卡在:

wait = WebDriverWait(driver, 30)

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".price-link:nth-child(1) .team-name")))

为什么要这样做?这是一个错误吗,因为它在普通 chrome 中完美运行,并在下面打印 h,除了无头...

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
from selenium.webdriver.chrome.options import Options


options = Options()
options.add_argument("--headless")
options.add_argument("window-size=1400,600")
driver = webdriver.Chrome(chrome_options=options)
#driver = webdriver.Chrome()
driver.set_window_size(1024, 600)
driver.maximize_window()

driver.get('https://www.sportsbet.com.au/betting/soccer?LeftNav')
print('?')
wait = WebDriverWait(driver, 30)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".price-link:nth-child(1) .team-name")))

print('h')

另一个例子:

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
from selenium.webdriver.chrome.options import Options


options = Options()
options.add_argument("--headless")
options.add_argument("window-size=1400,600")
driver = webdriver.Chrome(chrome_options=options)
#driver = webdriver.Chrome()
driver.set_window_size(1024, 600)
driver.maximize_window()
import time
driver.get('https://www.sportsbet.com.au/betting/soccer?LeftNav')
import time
time.sleep(10)

langs = driver.find_elements_by_css_selector(".price-link:nth-child(1) .team-name")
langs_text = []

for lang in langs:
    print(lang.text)
    langs_text.append(lang.text)

print('h')

删除等待的作业打印,直到没有任何内容被刮掉。页面未加载可能是问题。

【问题讨论】:

  • 这个元素接下来要做什么?
  • @DebanjanB 抓取页面。非常困难,因为页面无法以无头方式加载

标签: python selenium selenium-chromedriver headless


【解决方案1】:

尝试使用以下代码:

element = WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".price-link:nth-child(1) .team-name")))

driver.execute_script("arguments[0].scrollIntoView(true);", element)

希望对你有帮助!

【讨论】:

  • 它实际上一直在等待元素出现,所以这无济于事。
  • @TheGman,如果你改成EC.element_to_be_clickable会发生什么?
  • 由于该更改再次陷入等待。无头 Chrome 和此页面发生了一些奇怪的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 2021-01-14
  • 1970-01-01
相关资源
最近更新 更多