Selenium ChromeDriver调用get()报InvalidArgumentException,JS执行器可正常跳转
问题根因
- 触发
InvalidArgumentException的核心原因是传入driver.get()的URL缺少协议头:你测试代码中定义的url值为www.hotstar.com,未添加http://或https://前缀。
Selenium的
WebDriver规范明确要求get()方法必须传入符合RFC标准的完整有效URI,缺少协议头的字符串无法被识别为合法的访问地址,因此直接抛出参数非法异常,这就是代码仅打印到数字3就中断的原因。
JavascriptExecutor执行跳转正常的原因:window.location属于浏览器原生API,浏览器自身的地址解析逻辑会自动为不带协议的域名补全默认协议(多数场景下默认补全https://),因此不需要严格传入带协议的完整地址也能正常跳转。
解决方案
修改测试代码中的URL定义,补全协议头即可解决问题:
@Test public void test() { // 补全https协议头 String url= "https://www.hotstar.com"; System.out.println("3"); driver.get(url); System.out.println("4"); String Title=driver.getTitle(); System.out.println(Title); }
内容的提问来源于stack exchange,提问作者Krishna Mohan
相关产品推荐
相关产品推荐

