我正在尝试使用 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=/beta
是 URL
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 toimport java.net.URL;
which will throwsMalformedURLException
, so you have toimport java.net.MalformedURLException;
如果这能回答您的问题,请告诉我。
关于Java Selenium 获取带有特殊字符的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44337470/