如何使用数据表验证同一页面中的所有元素

时间:2019-06-11 11:26:07

标签: java selenium-webdriver cucumber

我想知道如何使用Selenium / Java / Cucumber中的数据表在同一页面中找到所有元素并将它们断言为显示在页面中。

例如,我有这样的情况

Sceanario: Verify all the elements in the xyz page
Given I am in the abc page
When I navigate to xyz page
Then I can see the following fields in the xyz page
|field 1|
|field 2|
|field 3|
|field 4|

2 个答案:

答案 0 :(得分:1)

第一步::构建数据表。 (提示,使用 Header ,我们可以以一种非常精确的方式实现数据表,并考虑数据表如下图所示)

Then I can see the following fields in the xyz page
    | Field Name | Locator |
    |  field 1   |  Xpath1 |
    |  field 2   |  Xpath2 |
    |  field 3   |  Xpath3 | 
    |  field 4   |  Xpath4 | 

第二步:实施步骤定义

    @Then    
    public void I_can_see_the_following_fields_in_the_xyz_page(DataTable table) throws Throwable {
        WebElement element;
        List<Map<String, String>> list = table.asMaps(String.class,String.class); 
        for(Map<String, String> list : data) {
            element = driver.findElement(By.xpath(list.get("Locator")));
            Assert.assertTrue("Element : "+list.get("Field Name")+ "not found",isElementPresent(element));   
        }
    }

实用程序方法:检查元素是否存在

    protected synchronized boolean isElementPresent(WebElement element) {
        boolean elementPresenceCheck = false;
        Wait<WebDriver> wait=null;
        try {
            wait = new FluentWait<WebDriver>((WebDriver) driver).withTimeout(10, TimeUnit.SECONDS).pollingEvery(1,
                    TimeUnit.SECONDS);
            elementPresenceCheck = wait.until(ExpectedConditions.visibilityOf(element)).isDisplayed();
            return elementPresenceCheck;
        }catch(Exception e) {
            return elementPresenceCheck;
        }
    }

答案 1 :(得分:0)

如果将所有值放入数组怎么办 { field 1, field 2, field 3, field 4 }  下一步->将检查可见性页面上的每个值?

我认为它应该可以解决您的问题。