поле проверки присутствует или отсутствует в селене Java - PullRequest
0 голосов
/ 27 марта 2019

Мне нужно найти, отображается элемент или нет. Как проверить это в веб-драйвере селена?

if(driver.findElement(By.id("p_first_name")).isDisplayed()) 

      {

        WebElement fname =driver.findElement(By.id("p_first_name"));
        fname.sendKeys("pradnya");

        WebElement lname = driver.findElement(By.xpath("//*[@id=\"p_last_name\"]"));
        lname.sendKeys("Bolli");

        WebElement Address1 = driver.findElement(By.xpath("//*[@id=\"address_11\"]"));
        Address1.sendKeys("New address1");

        WebElement Address2 = driver.findElement(By.xpath("//*[@id=\"address_21\"]"));
        Address2.sendKeys("New address2");

        WebElement City = driver.findElement(By.xpath("//*[@id=\"city1\"]"));
        City.sendKeys("Pune");

        WebElement Country = driver.findElement(By.xpath("//*[@id=\"country1\"]"));
        Country.sendKeys("India");

        WebElement ZipCode = driver.findElement(By.xpath("//*[@id=\"pincode1\"]"));
        ZipCode.sendKeys("India");

        WebElement State = driver.findElement(By.xpath("//*[@id=\"bds\"]"));
        State.sendKeys("Maharashtra");

        }   
    else 
        {
        WebElement address = driver.findElement(By.xpath("//*[@id=\"update_add77\"]"));
        address.click();
        }

Сначала на странице оформления заказа отображается форма адреса, а когда пользователь регистрирует ее, отображается список. Форма адреса не отображается, когда отображается список. В таком случае, как проверить, отображается ли поле формы адреса или нет?

Я использую приведенный выше код, но он выдает мне сообщение об исключении

 'Unable to locate element: #p_first_name'

Ответы [ 3 ]

3 голосов
/ 27 марта 2019

Элемент дает NoSuchElementException, так как элемент отсутствует в пользовательском интерфейсе, в котором вы пытаетесь найти его, используя метод isDisplayed().

Итак, чтобы решить вашу проблему, вы должны получить список элементов и затем получить размер этого списка, если размер больше 0, это означает, что элемент присутствует на странице, в противном случае элемент отсутствует .
Вам необходимо внести следующие изменения в код:

if(driver.findElements(By.id("p_first_name")).size()>0){
  // Add the if code here
}
else{
  // Add the else code here
}
0 голосов
/ 27 марта 2019
public boolean isElementPresent(By element,int timeOutInSeconds,int pollingEveryInMiliSec) {
        try {
        WebDriverWait wait = new WebDriverWait(d, timeOutInSeconds);
            wait.pollingEvery(pollingEveryInMiliSec, TimeUnit.MILLISECONDS);
            wait.ignoring(NoSuchElementException.class);
            wait.ignoring(ElementNotVisibleException.class);
            wait.ignoring(StaleElementReferenceException.class);
            wait.ignoring(NoSuchFrameException.class);
        wait.until(ExpectedConditions.visibilityOfElementLocated(element) ));
        return true;
        }
        catch(Exception e) {
            return false;
        }

    }

Если вы учитываете timeOutInSeconds = 20 и pollingEveryInMiliSec = 5 каждые 5 мс, этот метод будет искать подающий элемент, пока не найдет его в течение 20 мс

0 голосов
/ 27 марта 2019

Вы можете создать метод для такой проверки. Мы используем NoSuchElementException для проверки того, что элемент не существует.

public boolean isElementExist(By locator)
    {
        try {
            driver.findElement(locator);
        } catch (NoSuchElementException e) {
            return false;
        }

        return true;
    }

Или из-за медленной загрузки и тайм-аутов, я советую использовать *WebDriverWait*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...