最近用一个实际的web项目在学习Webdriver,关于新建一个备份任务的过程,先是有一个父页上button弹开一个子页,总共有4个子页,必须前一个页上的必填信息录完,才能在这个页面触发下一个子页。
如果在baseUrl1第一个子页录完信息,第一个子页有重命名校验和必填项校验。
进入baseUrl2第2个子页,用driver.navigate().to(baseUrl2),直接跳转到第2个页,不受第一个子页的约束,直接导航到第2个页面的输入。
这样会导致什么问题,第一个子页的信息是没有经过校验就进入下一个子页。这样,除了上面的重命名没有校验外,另外信息是否已经进入后台保存也是没有管的,而是直接在前台操作上直接进入下一个页面的操作,导致后台有可能数据丢失的情况,webdriver只管了前台界面的操作。
怎么避免后台数据丢失呢,那么就不能用:driver.navigate().to(baseUrl2)方法,这种方法太危险,不管实际的页面逻辑。
改用:driver.get(driver.getCurrentUrl()),这样通过实际的页面逻辑来获取URL结果,原理是当页面校验在前、后台通过后,点击“下一步”触发第二个子页时,会给出第二个子页的URL地址;如果页面校验在前、后台没有通过,那么就触发不了第二个页面,也就获得不了第二个页的URL地址,那么用driver.getCurrentUrl(),就获得不了最新页面的地址,也就无法跳转到第2个页面。如此,用driver.get(driver.getCurrentUrl())这样操作就保证跟页面的逻辑对应起来。也就不会脚本运行完成后,出现备份任务有时生成有时没有生成的情况。
调整到后面的子页,也是用相同的方法:driver.get(driver.getCurrentUrl());
但到第4个子页调整到父页时就不能用这个方法,因为driver.getCurrentUrl()这个获取不到父页的URL地址。只能再用一下driver.navigate().to(fatherURl),用这个方法,只要保证最后一个子页信息录入不存在丢失情况,就不影响备份任务单据的生成了。
分享到:
相关推荐
//使用navigate.to方法打开第二个页面:免费课 driver.navigate().to("https://www.imooc.com/course/list"); //使用navigate.back方法转至上一个页面:慕课网首页 driver.navigate().back();
Selenium WebDriver提供了两种方法来实现这一目的:`get(url)`和`navigate().to(url)`。 - **`get(url)`**: 最常用的访问URL的方法,简洁且不易出错。 - **`navigate().to(url)`**: 也可以用来访问URL,但相对不...
- 使用 `driver.navigate().to()` 方法打开 URL: ```java driver.navigate().to(baseUrl); ``` #### 2. 回退网页 当需要模拟用户点击后退按钮时,可以通过以下方式实现: ```java driver.navigate().back(); ...
以下是关于WebDriver API的一些核心概念和使用方法: 1. **安装依赖**:在Java中,你需要添加Selenium的JAR文件到你的项目类路径,或者通过Maven或Gradle管理依赖。对于C#,则需要引用NuGet包`Selenium.WebDriver`...
通过调用 `driver.get(url)` 或 `driver.navigate().to(url)` 方法,可以打开指定的网页。WebDriver 会等待页面完全加载后才继续执行后续的测试脚本。然而,对于使用 AJAX 技术动态加载内容的页面,WebDriver 无法...
- `driver.navigate().to(url)`:除了基本的打开 URL 功能,`navigate()` 对象还提供了对浏览器历史记录的操作,如前进 (`forward()`) 和后退 (`back()`). 2. 关闭浏览器: 当完成自动化任务后,需要关闭浏览器。...
System.setProperty("webdriver.chrome.driver", "path/to/your/chromedriver.exe"); WebDriver driver = new ChromeDriver(); ``` 确保`chromedriver.exe`与你的Chrome浏览器版本兼容,并放置在可执行路径下。 ###...
driver.navigate().to("http://www.example.com"); driver.navigate().back(); ``` ##### 3.3 高级使用 除了基本功能外,Selenium还提供了一些高级特性: - **改变useragent**: 修改浏览器的User-Agent字符串: ...
driver.navigate().to("http://www.example.com"); // 切换 Frame driver.switchTo().frame(driver.findElement(By.id("frameId"))); ``` **3.3 高级使用** 除了基本操作外,WebDriver 还提供了一些高级功能,以...
driver.navigate.to "http://google.com" ``` 这行代码实际上是客户端向远程服务器发送了一个HTTP POST请求,内容如下: ```shell POST /session/285b12e4-2b8a-4fe6-90e1-c35cba245956/url POST_DATA {"url":...
driver.navigate.to "http://google.com" ``` 这段代码背后的实际过程如下: 1. 客户端(测试脚本)向远程服务器发送POST请求,如下所示: ``` POST /session/285b12e4-2b8a-4fe6-90e1-c35cba245956/url { ...
- `navigate().to(String url)`: 导航到新的URL - `manage().window().maximize()`: 最大化窗口 - `manage().timeouts()`: 设置超时时间,如页面加载超时、隐式等待等 ### 6. JavaScript执行 - `executeScript...
在Selenium中,我们可以使用`driver.navigate().back()`来实现相同的功能。这在自动化测试中很有用,比如在测试用户在不同页面间跳转时,我们可能需要验证用户是否能正确返回到之前的页面。 2. **前进(forward())...
- **兼容性**:Selenium 2.0 提供了向后兼容的功能,可以在 2.0 版本中使用 1.0 版本的 API。 - **示例**:具体使用方法可以参考官方文档和社区资源。 以上是对 Selenium 2.0 的关键知识点进行了详细解析,包括基础...
在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用、Web应用和游戏等领域。本资源“抓网页(zh).rar”显然关注的是如何使用C#来抓取网页内容,这是网络爬虫技术的一个关键部分。网络爬虫是自动...