我正试图执行一段代码,将内部div向下滚动到某个元素。这只适用于以下情况:
Options().headless = False
但正如你们所知,这对整件事的表现并不好。
进行滚动的代码是:
element = driver1.find_element_by_xpath(reference)
driver1.execute_script("arguments[0].scrollIntoView();", element)
我怎么能做这样的事情,但无头等于True?
scrollIntoView()
必须以相同方式工作,而不考虑Options().headless = True
或Options().headless = False
。
然而,在使用无头模式时,您需要:
-
最大化浏览窗口
options = Options() options.add_argument("--headless") options.add_argument("window-size=1400,600")
-
另外诱导WebDriverWait等待
visibility_of_element_located()
如下:from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "reference"))) driver.execute_script("arguments[0].scrollIntoView();", element)
参考
您可以在中找到相关的详细讨论
- Java中的Selenium在使用无头Chrome时找不到元素