检查Selenium中多个页面的标题
Check title of multiple pages in Selenium
我目前正在使用WebDriver.js在Browserstack上运行一些自动测试。我的目标是获取给定div中的所有href,打开它们并检查链接指向的页面的标题
for (var i = 0; i < hrefs.length; i++) {
var href = hrefs[i],
site_name = sites_names[i];
driver.get(href);
driver.getTitle().then(function(title) {
assert.equal(title, site_name);
});
}
我的问题是get
和getTitle
都是异步方法,因此当我调用getTitle
时,页面已经更改,因此断言失败。这种情况的最佳模式/解决方案是什么?
如果我正确阅读了你的问题,那么你的断言失败了,因为断言发生在页面完全加载到浏览器之前?我认为您需要在这里提到的getTitle
呼叫周围使用"等待"逻辑
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).build();
driver.get('http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.name('btnG')).click();
driver.wait(function() {
return driver.getTitle().then(function(title) {
return title === 'webdriver - Google Search';
});
}, 1000);
driver.quit();
如果您只想检查页面中所有链接的标题,您可以将驱动程序更改为
WebDriver driver = new HtmlUnitDriver();
这只是一个很好的练习。。。。不是强制性的(以提高执行速度)。检查标题后,您可以将驱动程序更改回原来的驱动程序。使用下面的代码逐个迭代有效的href,并相应地断言
List<WebElement> allLinks = driver.findElements(By.tagName("a")); // use tagname according to the need
for (WebElement link : allLinks) {
if (link.getAttribute("href") != null && link.getText().isEmpty()==false) { //again modify the condition here accordingly
driver.get(link.getAttribute("href"));
driver.getTitle().then(function(title) {
assert.equal(title, site_name);
});
}
}
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- CSS-如何定位内容数据标题
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- python-selenium-点击上升链接
- 在PHP中使用javascript更改页面标题'if'
- Selenium Web驱动程序和javascript
- Brightcove获取/显示HTML中的当前视频标题和描述
- React组件-设置页面标题
- Selenium WebDriver and JavaScript change
- jQuery动态更改标题
- HighCharts长标题文本在某些元素上重叠
- 将行添加到具有固定标题的HTML表中
- CKEditor v4:自制插件中对话框的动态标题
- 如何在自动完成时设置属性标题
- 单元格的工具提示或标题不显示超过2000个字符
- 如何从相应的控制器动态更新标题和描述
- 将超链接添加到“;标题“;标记文本
- Selenium驱动程序不反映单击()后的页面更改
- 将图像标题存储在selenium IDE中
- 检查Selenium中多个页面的标题