Selenium:网站中所有页面上都存在特定的WebElement

时间:2017-08-16 07:29:24

标签: selenium webdriver

我们在所有页面的页面顶部都有一个搜索小部件。我想检查一下,如果该小部件在网站的所有页面上都可见。有没有更聪明的方法,而不是去所有的页面并检查它?

1 个答案:

答案 0 :(得分:0)

直接回答,当您想要检查窗口小部件是否可见时,我们应该使用方法isVisible()。但isVisible()中提供了Selenium RC,在当前的WebDriver实施中已弃用。我们可以使用isDisplayed()isEnabled()isSelected()中的任何一种来代替documentation

因此,当您谈到search widget at the top of the page in all the pages时,我认为 isDisplayed() 方法符合您的要求。例如,让我们以Search主页上的stackoverflow.com字段为例,该字段可在所有页面上使用。现在我们想要check, if that widget is visible on all the pages of the website。示例代码块可以如下:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class A_Firefox 
{
    public static void main(String[] args) 
    {
        System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
        WebDriver driver =  new FirefoxDriver();
        driver.get("https://stackoverflow.com");
        System.out.println("Application opened");
        System.out.println("Page Title is : "+driver.getTitle());
        WebElement my_element = driver.findElement(By.xpath("//input[@name='q']"));
        if(my_element.isDisplayed())
        {
            System.out.println("Element is displayed");
        }
        else
        {
            System.out.println("Element is not displayed");
        }
        driver.quit();
    }
}

我的控制台上的输出是:

Application opened
Page Title is : Stack Overflow - Where Developers Learn, Share, & Build Careers
Element is displayed

增强:

作为增强功能,您可以创建一个presenceOfSearchBox(WebElement ele)函数,并将WebElement作为参数从您访问的每个页面传递,以验证是否显示小部件,如下所示:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class A_Firefox 
{
    public static void main(String[] args) 
    {
        System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
        WebDriver driver =  new FirefoxDriver();
        driver.get("https://stackoverflow.com");
        System.out.println("Application opened");
        System.out.println("Page Title is : "+driver.getTitle());
        WebElement my_element = driver.findElement(By.xpath("//input[@name='q']"));
        presenceOfSearchBox(my_element);
        driver.quit();
    }

    public static void presenceOfSearchBox(WebElement ele)
    {
        if(ele.isDisplayed())
        {
            System.out.println("Element is displayed");
        }
        else
        {
            System.out.println("Element is not displayed");
        }
    }
}