kar*_*oss 6 java selenium webdriver
有时网页的可见内容取决于页面输入元素状态(例如,输入元素"选择您的大学"可能仅在您在"作业"字段中选择"学生"后)或单击某些页面元素(如下拉菜单)时才会显示纽扣).我正在尝试使用Selenium Webdriver自动查找这些页面元素依赖项的过程.第一个想法是在文本输入字段中输入一些内容,设置选中/取消选中的复选框,单击某些按钮/链接等,然后查看页面上是否有任何元素出现/消失.问题是:
有没有一种简单的方法可以找出页面上是否出现过某些内容?好吧,我可以在每次更改后制作一个从网页元素到{'可见','隐形'}状态的地图,并找出是否有变化,但有没有为此目的内置的内容?
单击某些按钮可能会导致加载另一个页面,我想继续使用我正在测试的页面,有没有办法确定click()方法是否会导致加载另一个页面并阻止它?
迪维对问题2的回答很好.对于第1部分,您可以检查元素是否像您所说的那样显示:
webElement.isDisplayed();
Run Code Online (Sandbox Code Playgroud)
或者您可以在事件之前和之后比较页面的html.
driver.getPageSource();
Run Code Online (Sandbox Code Playgroud)
(如果在每个事件发生后发生变化,您也可以检查网址).
获取html源代码的一个问题是,在最后一次操作之后可能已触发事件且未完成,从而使html保持不变.要解决此问题,您可以检查以下某些条件:
(Boolean) ((JavascriptExecutor)driver).executeScript("return jQuery.ready");
((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete");
Run Code Online (Sandbox Code Playgroud)
或者您可能正在使用另一个具有类似于jQuery.ready的函数的javascript框架.
最后,您可能会遇到一个问题,即只有在您更改了活动元素,跳出字段等后才会触发事件.因此您可以运行以下内容:
Actions actionObject = new Actions(driver);
actionObject.sendKeys(Key.TAB).perform();
Run Code Online (Sandbox Code Playgroud)
或者您可以使用javascript来设置它(我没有检查下面的代码,我会将webElement设置为html基本元素):
((JavascriptExecutor) driver).executeScript("arguments[0].focus();", webElement);
Run Code Online (Sandbox Code Playgroud)
我不建议使用webdriver单击body元素,因为这可能会撤消您的最后一次单击.
我将Divi对问题2的回答包括在内:
我们可以通过获取页面的URL并将其与预期的URL进行比较来检查它是否重定向到另一个页面
WebDriver driver;
driver.getCurrentUrl() // will returns the String value
Run Code Online (Sandbox Code Playgroud)
如果您的currrent网址与您预期的网址不匹配,那么您可以选择两种方式
1)您可以通过在selenium(或)webdriver导航方法中使用Open函数再次打开预期的URL
driver.navigate().to("expected_url");
Run Code Online (Sandbox Code Playgroud)
2)您可以使用后退导航
driver.navigate().back();
Run Code Online (Sandbox Code Playgroud)
那么你的第一个问题是检查 Java 中的可见性
Selenium selenium;
selenium.isVisible("id=element_id"); // it will return boolean value whether the element is present or not
Run Code Online (Sandbox Code Playgroud)
如果你想使用 webDriver 方法,那么使用
RenderedWebElement webElement=findElement(By.id("element_id"));
webElement.isDisplayed();
Run Code Online (Sandbox Code Playgroud)
对于你的第二个问题
我们可以通过获取页面的 url 并将其与预期 url 进行比较来检查是否重定向到另一个页面
WebDriver driver;
driver.getCurrentUrl() // will returns the String value
Run Code Online (Sandbox Code Playgroud)
如果您当前的网址与您预期的网址不匹配,则意味着您有两种方法
1)您可以使用selenium(或)webdriver导航方法中的Open函数再次打开您期望的url
driver.navigate().to("expected_url");
Run Code Online (Sandbox Code Playgroud)
2)您可以使用后退导航
driver.navigate().back();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20669 次 |
| 最近记录: |