Как извлечь или выбрать конкретную дату и время для остаточного элемента в веб-драйвере selenium

Поскольку я провожу тестирование в своем веб-приложении с помощью selenium webdriver java, в том, что один элемент остается включенным, я попытался использовать свой код, но он показывает ошибку:

Исключение:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: .btn-flat\ For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html 

Но я хочу выбрать конкретную дату и время, пожалуйста, помогите мне в коде

java затмение селена

driver.findElement(By.id("time")).click();

driver.findElement(By.className("dtp-btn-ok")).click();

Thread.sleep(2000);

driver.findElement(By.id("th-12")).click();

Thread.sleep(3000);

driver.findElement(By.className("btn-flat ")).click();


// driver.findElement(By.id("note")).sendKeys("Be Alert Every Time");

        //driver.findElement(By.className("green")).click();

пакет com.s3sales.demo;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.Select;


public class Leads {

    public static void main(String[] args) throws InterruptedException {

        WebDriver driver=new FirefoxDriver();

        driver.get("http://sssamriddhisales.com/crm");

        Thread.sleep(2000);

        driver.findElement(By.id("userName")).sendKeys("admin");

        Thread.sleep(2000);

        driver.findElement(By.id("password")).sendKeys("admin123");     

        Thread.sleep(2000); 

        driver.findElement(By.className("btn-success")).click();

        Thread.sleep(1000);

         WebElement element = driver.findElement(By.linkText("Leads"));

         Thread.sleep(1000);

         Actions action = new Actions(driver);

        action.moveToElement(element).moveToElement(driver.findElement(By.cssSelector("[data-id='leads']"))).click().build().perform();

        Thread.sleep(2000);

        driver.findElement(By.id("newLead")).click();

        Thread.sleep(1000);

        driver.findElement(By.id("custFirstName")).sendKeys("SUBBA");

        Thread.sleep(1000);

        driver.findElement(By.id("custLastName")).sendKeys("RAO");

        Thread.sleep(2000);

        Select service=new Select(driver.findElement(By.id("custService")));

        service.selectByVisibleText("Loan Against Gold");

        Thread.sleep(2000);

        driver.findElement(By.id("custContactNo")).sendKeys("7799445588");

        Thread.sleep(1000);

        driver.findElement(By.id("custEmail")).sendKeys("[email protected]");

        Thread.sleep(1000);

        driver.findElement(By.id("isCust")).click();

        Thread.sleep(2000);

        Select branch=new Select(driver.findElement(By.id("custBranch")));

        branch.selectByVisibleText("gopal shop");

        Thread.sleep(1000);

        driver.findElement(By.id("addressLine1")).sendKeys("6-1-138/J , Shali Bandda");

        Thread.sleep(1000);

        driver.findElement(By.id("addressLine2")).sendKeys("Charminar , Hyderabad");

        Thread.sleep(1000);

        Select state=new Select(driver.findElement(By.id("stateName")));

        state.selectByVisibleText("Telangana");

        Thread.sleep(2000);

        Select district=new Select(driver.findElement(By.id("districtName")));

        district.selectByVisibleText("Ranga Reddy");

        Thread.sleep(1000);

        Select area=new Select(driver.findElement(By.id("areaName")));

        area.selectByVisibleText("Uppal");

        Thread.sleep(1000);

        Select addType=new Select(driver.findElement(By.id("addressType")));

        addType.selectByVisibleText("Home");

        Thread.sleep(1000);

        driver.findElement(By.id("isAddPer")).click();

         Thread.sleep(1000);

         Select status=new Select(driver.findElement(By.id("status")));

         status.selectByVisibleText("Follow up");

         Thread.sleep(1000);

         //remainder-on in Leads Module

        driver.findElement(By.id("time")).click();

        driver.findElement(By.className("dtp-btn-ok")).click();

        Thread.sleep(2000);

        driver.findElement(By.id("th-12")).click();

        Thread.sleep(3000);

        driver.findElement(By.className("btn-flat ")).click();


        // driver.findElement(By.id("note")).sendKeys("Be Alert Every Time");

        //driver.findElement(By.className("green")).click();

    }

}

Исключение:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: .btn-flat\ For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html

@TDK Пока вы редактируете вопросы, не добавляйте <blockquotes> в журналы трассировки ошибок. Выполнение такой отладки становится затруднительным, поскольку Сообщения об ошибках в трассировка стека ошибок получает завернутое слово.

undetected Selenium 21.01.2019 14:21
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
79
1

Ответы 1

Вы должны использовать WebDriverWait, а не спать!

Это поможет вам и с вашей ошибкой...

WebDriverWait wait = new WebDriverWait(webDriver, 30);
wait.until(ExpectedConditions.elementToBeClickable(By.className("btn-flat"))).click();

Обновлено:

С учетом сказанного... здесь может быть просто синтаксическая ошибка... у вас есть локатор By.className("btn-flat ") с пробелом в конце имени класса... в моем ответе я изменил это на By.className("btn-flat")... чувствую бесплатно изменить его обратно.

РЕДАКТИРОВАТЬ2:

Посмотрев на сайт, я подозревал, что локаторы неверны...

Открывающийся iFrame не является iFrame, но ведет себя как один...

Чтобы преодолеть это, я изменил локаторы на XPath следующим образом:

(By.XPATH, "//div[@class='dtp']//*[@class='dtp-btn-ok btn btn-flat']")

class='dtp' — это iFrame, а все, что следует за ним, — это XPath к элементу!

Надеюсь, это поможет вам!

Комментарии не для расширенного обсуждения; этот разговор был перешел в чат.

Samuel Liew 23.01.2019 02:20

Другие вопросы по теме