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代码都已经执行完毕。以下是一个示例:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 导入Proxy类和ProxyType枚举类
from selenium.webdriver.common.proxy import Proxy, ProxyType
# 亿牛云(动态转发隧道代理)爬虫代理加强版 IP地址、端口号、用户名和密码
proxy_host = 'www.16yun.cn'
proxy_port = '31000'
proxy_username = '16YUN'
proxy_password = '16IP'
# 创建代理对象
proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.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.CHROME
proxy.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。无头模式可以在后台运行浏览器,而无需显示浏览器窗口。以下是一个示例:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 创建 Chrome WebDriver 配置
chrome_options = Options()
chrome_options.add_argument("--headless") # 启用无头模式
# 创建 Chrome WebDriver 实例
driver = webdriver.Chrome(options=chrome_options)
# 进行其他操作...
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。