Проверка условий на проверку if

#java

#java

Вопрос:

Я использую этот код для вычисления отступа кнопки на странице от границы браузера.

         Dimension dm = new Dimension(1024,768);
        //Setting the current window to that dimension
        driver.manage().window().setSize(dm);

        // Click Login button to submit login form
        WebDriverWait loginButtonWebDriverWait = new WebDriverWait(driver, 4000);

        WebElement loginButtonWebElement = loginButtonWebDriverWait.until(ExpectedConditions.presenceOfElementLocated(By.id("login")));

        int loginButtonX = loginButtonWebElement.getLocation().getX();
        int loginButtonY = loginButtonWebElement.getLocation().getY();
        int loginButtonWidth = loginButtonWebElement.getRect().getWidth();
        int loginButtonHeight = loginButtonWebElement.getRect().getHeight();
        System.out.println("Login Button is "   loginButtonX   " pixels from left border.");
        System.out.println("Login Button is "   (screenWidth - loginButtonX   loginButtonWidth)   " pixels from right border.");
        System.out.println("Login Button is "   loginButtonY   " pixels from top border.");
        System.out.println("Login Button is "   (screenHeight - loginButtonY   loginButtonHeight)   " pixels from bottom border.");

        // We need to check that the size is not less than 10 pixels. If the space is less trow exception and fail the test.
        assertThat(loginButtonX).isGreaterThan(5);
        assertThat(loginButtonY).isGreaterThan(5);
 

Мне нужно реализовать некоторую проверку, подобную этой:

 (window_width - loginButtonWidth) < loginButtonX < window_width
 

и

 0 < `loginButtonY` < loginButtonHeight. 
 

Знаете ли вы, как я могу правильно реализовать проверку следующим образом:

 if((screenWidth - loginButtonWidth) < loginButtonX < screenWidth){

}
 

Теперь я получаю сообщение об ошибке: Operator '<' cannot be applied to 'boolean', 'int' . Как я могу решить эту проблему?

Ответ №1:

(screenWidth - loginButtonWidth) < loginButtonX возвращает true or false в зависимости от того, является ли условие истинным. Таким образом, в вашем случае оператор (window_width - loginButtonWidth) < loginButtonX < window_width будет равен:

 if(true/false < number)
 

Что выдает ошибку: Operator '<' cannot be applied to 'boolean', 'int' , поскольку вы не можете проверить, является ли логическое значение больше или меньше числа.

Вы должны выполнить следующее:

 int subtracted = screenWidth - loginButtonWidth;
if(subtracted < loginButtonX amp;amp; subtracted < screenWidth){

}