它在非无头模式下运行良好,但在无头模式下没有检测到元素。
网址:https : //moneyforward.com/users/sign_in
我想输入邮件地址和密码,然后在无头模式下单击按钮。
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import chromedriver_binary
options = Options()
options.add_argument("--headless")
options.add_argument("--disable-gpu")
driver = webdriver.Chrome(options=options)
driver.get("https://moneyforward.com/users/sign_in")
time.sleep(5)
# type into mail_address
driver.find_element_by_id('sign_in_session_service_email').send_keys({mail_address}])
# type into passowrd
driver.find_element_by_id('sign_in_session_service_password').send_keys({password})
# click login button
driver.find_element_by_id("login-btn-sumit").click()
错误说明如下。
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="sign_in_session_service_email"]"}
(Session info: headless chrome=80.0.3987.132)
为什么它在非无头模式下工作时不能在无头模式下工作?帮我。
我把你的代码修改了一下,最后执行了,这是执行结果:
代码块:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.headless = True
options.add_argument('window-size=1400,600')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.get('https://moneyforward.com/users/sign_in')
print(driver.page_source)
driver.save_screenshot('./save_screenshot_method.png') #Capture the screen
driver.quit()
控制台输出:
<html><head></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">Forbidden</pre></body></html>
浏览器快照:
似乎ChromeDriver驱动的google-chrome-headless被检测到并且被拒绝访问,显示消息禁止。
作为解决方案,您可以采用一些策略,以便不会检测到ChromeDriver驱动的Chrome 浏览上下文,您可以在以下位置找到一些详细讨论:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句