提问人:Toms_Hd3z 提问时间:8/2/2023 更新时间:8/2/2023 访问量:172
Selenium ChromeDriver.get() 未正确添加特殊字符 UTF 8 解码 Java
Selenium ChromeDriver.get() does not correctly add special characters UTF 8 decoding Java
问:
我使用 selenium 版本:“3.141.59”通过 java 访问页面的内容,我正在使用 ChromeDriver 模拟 Web 浏览器的使用,当查询 url 包含特殊字符 --charset=utf -8 时会出现问题,因为它解码了字符并且 Web 请求的结果不符合预期, 下面是一个代码示例:
System.setProperty(
"webdriver.chrome.driver",
"C:\\Program Files\\Controllers\\chromedriver-win64\\chromedriver.exe"
); // -> chromedriver version 115.0.5790.102
ChromeOptions options = new ChromeOptions();
options.addArguments("--charset=UTF-8");
WebDriver driver = new ChromeDriver(options);
driver.get("úrl/example/with/especial-character/"); // -> url: https://www.úrl/example/with/especial-character/
我尝试使用以下方法对 url 进行编码:
String encoderUrl = URLEncoder.encode("úrl/example/with/especial-character/", "UTF-8");
driver.get(encodeUrl)
但是这修改了已经编码的 url,所以我不知道如何解决这个问题,有什么有用的方法或库可以解决这个问题吗?
dependencies {
testImplementation platform('org.junit:junit-bom:5.9.1')
testImplementation 'org.junit.jupiter:junit-jupiter'
// https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver
implementation group: 'org.seleniumhq.selenium', name: 'selenium-chrome-driver', version: '3.141.59'
// https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-support
implementation group: 'org.seleniumhq.selenium', name: 'selenium-support', version: '3.4.0'
}
答:
0赞
undetected Selenium
8/2/2023
#1
Selenium v3.141.59 现在很古老。
但是,使用 selenium4 和 WebDriver v4.10.0,我发现特殊字符就像手动访问一样相似。
网址
https://www.úrl/example/with/especial-character/
手动浏览器快照:
代码块:
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.úrl/example/with/especial-character/");
浏览器快照:
0赞
Toms_Hd3z
8/2/2023
#2
我已经设法解决了这个问题,ChromeDriver 没有在内部更改我的字符编码,我使用的 url 是从枚举类导出的,而我使用的 IDE (intellij IDEA) 没有在 utf-8 中编码我的文件,所以当收到类中的值时,字符串的字符被替换, 就像做一样简单:
byte[] asciiURL = url.getBytes();
String utf8URL = new String(asciiURL, StandardCharsets.UTF_8);
有了这个就足够了。
评论
// -> 网址:https://www。úrl/example/with/especial-character/
请原谅我,我不做硒,但我认为这就是你所看到的?如果是这样,在哪里 - 在控制台中?如果是这样,哪个控制台?