Selenium使用中报错:We\'re sorry but hr-frontend-v2 doesn\'t work properly without JavaScript enabled. Please enable it to continue.这个错误提示表明目标网页要求启用JavaScript才能正常工作,而默认情况下,Selenium WebDriver是启用JavaScript的。如果遇到此错误,请按照以下步骤尝试解决问题:
1、确认Chrome WebDriver版本:确保你使用的Chrome WebDriver与你的Chrome浏览器版本匹配。如果两者不匹配,可能会导致某些JavaScript功能无法正常工作。你可以在Chrome WebDriver官方下载页面上找到与你的Chrome浏览器版本匹配的WebDriver版本。
2、更新Chrome浏览器:确保你的Chrome浏览器是最新版本。有时,旧版本的浏览器可能无法正确处理某些JavaScript功能,更新浏览器可能会解决这个问题。
3、显式等待:在你执行任何操作之前,使用Selenium的WebDriverWait显式等待确保页面完全加载完成。这可以确保所有的JavaScript代码都已经执行完毕。以下是一个示例:
fromseleniumimportwebdriverfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasEC# 导入Proxy类和ProxyType枚举类fromselenium.webdriver.common.proxyimportProxy, ProxyType# 亿牛云(动态转发隧道代理)爬虫代理加强版 IP地址、端口号、用户名和密码proxy_host='www.16yun.cn'proxy_port='31000'proxy_username='16YUN'proxy_password='16IP'# 创建代理对象proxy=Proxy() proxy.proxy_type=ProxyType.MANUALproxy.http_proxy=f'http://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}'proxy.ssl_proxy=f'http://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}'# 将Proxy对象转换为字典capabilities=webdriver.DesiredCapabilities.CHROMEproxy.add_to_capabilities(capabilities) # 创建一个ChromeOptions对象,并且传递代理字典options=webdriver.ChromeOptions() options.add_argument('--proxy-server=%s'%proxy.http_proxy) # 将ChromeOptions对象作为参数传递给Chrome WebDriver实例driver=webdriver.Chrome(options=options) # 打开网页driver.get("http://example.com") # 显式等待页面加载完成wait=WebDriverWait(driver, 10) # 最多等待10秒wait.until(EC.presence_of_element_located((By.TAG_NAME, "body"))) # 进行其他操作...
4、使用无头模式:如果目标网页仍然无法正常工作,你可以尝试使用无头模式运行Chrome WebDriver。无头模式可以在后台运行浏览器,而无需显示浏览器窗口。以下是一个示例:
fromseleniumimportwebdriverfromselenium.webdriver.chrome.optionsimportOptions# 创建 Chrome WebDriver 配置chrome_options=Options() chrome_options.add_argument("--headless") # 启用无头模式# 创建 Chrome WebDriver 实例driver=webdriver.Chrome(options=chrome_options) # 进行其他操作...