微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

「Selemium」- ChromeDriver only supports characters in the BMP @20210211

问题描述

在 Selenium 中,执行自动化测试任务,产生如下错误

Caught: org.openqa.selenium.WebDriverException: unkNown error: ChromeDriver only supports characters in the BMP
  (Session info: chrome=87.0.4280.66)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'laptop-k53sd', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-47-generic', java.version: '1.8.0_265'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 87.0.4280.66, chrome: {chromedriverVersion: 87.0.4280.66 (fd98a29dd59b3..., userDataDir: /tmp/.org.chromium.Chromium...}, goog:chromeOptions: {debuggerAddress: localhost:42727}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: LINUX, platformName: LINUX, proxy: Proxy(), setwindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:virtualAuthenticators: true, webdriver.remote.sessionid: 7569ceb732eda9f22ba68994b0e...}
Session ID: 7569ceb732eda9f22ba68994b0ed1ee4
org.openqa.selenium.WebDriverException: unkNown error: ChromeDriver only supports characters in the BMP
  (Session info: chrome=87.0.4280.66)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'laptop-k53sd', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-47-generic', java.version: '1.8.0_265'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 87.0.4280.66, chrome: {chromedriverVersion: 87.0.4280.66 (fd98a29dd59b3..., userDataDir: /tmp/.org.chromium.Chromium...}, goog:chromeOptions: {debuggerAddress: localhost:42727}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: LINUX, platformName: LINUX, proxy: Proxy(), setwindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:virtualAuthenticators: true, webdriver.remote.sessionid: 7569ceb732eda9f22ba68994b0e...}
Session ID: 7569ceb732eda9f22ba68994b0ed1ee4
	at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
	at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
	at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
	at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:285)
	at org.openqa.selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.java:106)
	at OschinaSeleniumCommand.actionPublishPost(toOschinaUsingSelenium.groovy:208)
	at OschinaSeleniumCommand$actionPublishPost$0.call(UnkNown Source)
	at OschinaSeleniumCommand.main(toOschinaUsingSelenium.groovy:72)

问题原因

针对我们的问题:在页面中,包含 Emoji 表情,这些表情是无法通过 sendKeys() 方法发送的。

解决方

方法一、更换驱动,使用 GeckoDriver / Firefox 可以解决问题。(我们没有尝试该方法,但是回答者说可以解决问题,我们这里仅作记录)

方法二、不再使用 sendKeys 方法,而是执行 JavaScript 代码

from selenium import webdriver

// 将要执行的代码
JS_ADD_TEXT_TO_INPUT = """
  var elm = arguments[0], txt = arguments[1];
  elm.value += txt;
  elm.dispatchEvent(new Event('change'));
"""

// 将要输入文本的元素(带有 Emoji 字符)
browser = webdriver.Chrome('C:\\python37\\chromedriver.exe')
browser.get("https://google.com/")
elem = browser.find_element_by_name('q')

// 将要输入的文本
text = "
                
                                 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐