java - 如何将 try catch 异常更改为 WebDriverWait

标签 java selenium-webdriver

我正在尝试根据从日历中选择的日期登录并搜索记录。我在每个步骤后都使用了 try catch 异常。我需要用 WebDriverWait 替换 try catch。但问题是我的页面上有由 id 或 XPath 标识的字段。所以我没有找到如何实现 WebDriverWait 而不是 try catch 的方法。谁能帮我吗?下面是我的代码结构和详细信息。

public class Login {
    public static WebDriver driver;
    String username = "username";
    String password = "password";
    String baseurl = "http://mybusiness.com/login.aspx";


public class Details {  
    @Test(priority = 0)
    public void loginpage() {
        //WebDriver driver = new FirefoxDriver();
        System.setProperty("webdriver.chrome.driver","D:\\From H\\Selenium Package\\ChromeDriver\\chromedriver_win32\\chromedriver.exe");

        DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        capabilities.setCapability("chrome.switches", Arrays.asList("--incognito"));
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--test-type");
        options.addArguments("--disable-extensions");
        capabilities.setCapability("chrome.binary","D:\\From H\\Selenium Package\\ChromeDriver\\chromedriver_win32\\chromedriver.exe");
        capabilities.setCapability(ChromeOptions.CAPABILITY, options);


        driver = new ChromeDriver(capabilities);
        driver.manage().deleteAllCookies();
        driver.manage().window().maximize();
        driver.get(baseurl);

        try {
            Thread.sleep(10000); // 1000 milliseconds is one second.
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
        WebElement username = driver.findElement(By.id("UserName"));
        username.sendKeys(username);
        try {
            Thread.sleep(10000); // 1000 milliseconds is one second.
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
        WebElement password = driver.findElement(By.id("Password"));
        password.sendKeys(password);
        try {
            Thread.sleep(10000);
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
        WebElement button = driver.findElement(By.id("ButtonClick"));
        button.click();
        try {
            Thread.sleep(10000);
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
    }

    // Selecting a date from date picker
    @Test(priority = 1)
    public void RecordSearch() {
        WebElement calendar = driver.findElement(By.id("CalendarId"));
        calendar.click();
        try {
            Thread.sleep(5000); // 1000 milliseconds is one second.
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }

        WebElement month = driver.findElement(By.xpath("XPath"));
        month.click();
        try {
            Thread.sleep(5000); // 1000 milliseconds is one second.
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }

        WebElement day = driver.findElement(By.xpath("XPath"));
        day.click();
        try {
            Thread.sleep(5000); // 1000 milliseconds is one second.
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }

        WebElement submit = driver.findElement(By.id("Submit"));
        submit.click();
        try {
            Thread.sleep(10000); // 1000 milliseconds is one second.
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }

    }

        driver.close();
}

最佳答案

我认为你最好添加一个隐式等待,例如设置驱动程序对象后,添加以下行:

driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

关于java - 如何将 try catch 异常更改为 WebDriverWait,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38696390/

相关文章:

python - 使用 selenium 在 nytimes.com 上单击 "show more"按钮

javascript - 使用 selenium webdriver 执行外部 .js 文件

java - 大O时间复杂度

java - 如何在没有gradle或Maven或Eclipse的情况下将jar文件添加到java项目中

python - 如何避免每次重新登录我的帐户,Selenium Python mac

java - 为什么 Firefox WebDriver 不会从以前的浏览器 session 中加载 Cookie?

java - Vaadin 组件的 Selenium WebDriver 自动化

java - 在Java HashMap中,如何强制泛型类型成为子类

java - 为什么没有显示正确的布局?

java - 如何使用 Java 将 RAW 数据写入文件?例如与 : nc -l 8000 > capture. raw 相同