无头铬无法检测元素(硒)

押海直树

它在非无头模式下运行良好,但在无头模式下没有检测到元素。

代码

网址: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)

为什么它在非无头模式下工作时不能在无头模式下工作?帮我。

德班扬B

我把你的代码修改了一下,最后执行了,这是执行结果:

  • 代码块:

    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>
    
  • 浏览器快照:

save_screenshot_method.png


分析

似乎ChromeDriver驱动的被检测到并且被拒绝访问,显示消息禁止


解决方案

作为解决方案,您可以采用一些策略,以便不会检测到ChromeDriver驱动的Chrome 浏览上下文,您可以在以下位置找到一些详细讨论:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章