Java Selenium 获取带有特殊字符的 URL

标签 java selenium

我正在尝试使用 selenium-java 3.3.1 获取 url,当我执行以下操作时:

driver.get(url.toString())

URL 如下所示:

https://hello.world.io/@snapshot/web/1.23.207-1-gc2b81d1/?referrer=/beta

Selenium 只将 @ 之后的所有内容输入到我的 Chrome 浏览器的 URL 中。我尝试过对整个 URL 进行 URLEncoding,仅对 @ 之后并包含 @ 的部分进行 URLEncoding,但这给了我一个无效的 url 错误。

非常感谢并帮助尝试强制 selenium-java 导航到该 url。

编辑

我尝试这样做

driver.get("https://hello.world.io/@snapshot/web/1.23.207-1-gc2b81d1/?referrer=/beta");

这样就可以了。

但是我需要将 URL 作为变量传递,然后调用 .toString()。我已将结果打印到 toString() 到控制台,看起来不错,所以一定发生了一些非常奇怪的事情,我可以指出。

最佳答案

这是您问题的答案:

虽然我无法访问您关心的网址https://hello.world.io/@snapshot/web/1.23.207-1-gc2b81d1/?referrer=/beta 但使用 Selenium 3.4.0、chromedriver v2.29 和 Google Chrome 58.x 我尝试了以下用例:

用例 1:

如果相关网址https://hello.world.io/@snapshot/web/1.23.207-1-gc2b81d1/?referrer=/beta是一个Sting 类对象,以下代码有效 -

String url = "https://hello.world.io/@snapshot/web/1.23.207-1-gc2b81d1/?referrer=/beta";
driver.get(url);

用例 2:

如果相关网址 https://hello.world.io/@snapshot/web/1.23.207-1-gc2b81d1/?referrer=/betaURL code> 类对象,在这种情况下,您必须通过 toString() 方法将其从 URL 类转换为 String 类,如下所示,该方法适用于我也是:

String url = "https://hello.world.io/@snapshot/web/1.23.207-1-gc2b81d1/?referrer=/beta";
URL myurl = new URL(url);
driver.get(myurl.toString());

PS: If you are using the URL class you have to import java.net.URL; which will throws MalformedURLException, so you have to import java.net.MalformedURLException;

如果这能回答您的问题,请告诉我。

关于Java Selenium 获取带有特殊字符的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44337470/

相关文章:

selenium - Protractor 未知错误: Connection reset

google-chrome - Protractor 允许通知 Chrome 46

java正则表达式不以点结尾的单词

java - 如何将文本从文本字段获取到另一个 JFrame 中的 JLable?

java - 在 SWT 应用程序中唯一标识控件

java - 带有spark sql的intelliJ上不相关的模棱两可的方法调用错误

java - 如何从具有相同结构的不同 jar 解析我的类

java - 如何使用 headless 浏览器处理警报(HtmlUnitDriver/Phantomjs 驱动程序)

python - Selenium 确定浏览器被卡住

java - Autowiring Spring 3.2 独立应用程序失败