Почему я получаю исключение NoSuchElementException при выполнении тестов в Cucumber - PullRequest
0 голосов
/ 11 декабря 2018

Последние несколько дней я писал тесты на огурце.Тесты, которые я написал до сих пор, работают отлично, я смог щелкнуть объекты, щелкнуть их мышью.Нет проблем.

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

Это происходит как с элементами строки таблицы, на которые я хочу щелкнуть, так и с текстовым вводом, на который я хочу отправить ключи.Я включил последний ниже.

 <input type="text" name="EMPLOYEE_label" value="" class="" 
 onkeypress="return dtPk(event,this);" onkeydown="return dtKd(event,this);" 
 onchange="dltCh(this,'EMPLOYEE__test');" size="30" wbvalid="true" 
isresolving="false">

Вот код, который я использую в настоящее время.

webdriver = new ChromeDriver();
WebDriverWait wait = new WebDriverWait(webdriver, 30);  
wait.until(ExpectedConditions.visibilityOfElementLocated(By
    .name("EMPLOYEE_label")));

JOptionPane.showMessageDialog(null, "WebDriver =" + webdriver);
WebElement empIDTextInput  = webdriver.findElement(By.name("EMPLOYEE_label"));
empIDTextInput.sendKeys("Bennett");
Thread.sleep(1000);
gtaProxyPage.clickFindButton().click();
Thread.sleep(1000);

gtaProxyPage.checkAssociateBox().click();
gtaProxyPage.loadTimesheet().click();
Thread.sleep(2000);

РЕДАКТИРОВАТЬ: я изменил код на это.Это больше похоже на то, что я начал с

     Thread.sleep(30000); 
     //this calls for the input element by className.
    gtaProxyPage.UserEntersNumberUnderTimesheet().click();
    gtaProxyPage.clickFindButton().click();
    gtaProxyPage.checkAssociateBox().click();
    gtaProxyPage.loadTimesheet().click();

Это ошибка, которую я получаю сейчас

 org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"class name","selector":"input.triggerButton"}

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

1 Ответ

0 голосов
/ 12 декабря 2018

Это сообщение об ошибке ...

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"class name","selector":"input.triggerButton"}

... означает, что такой элемент не найден при использовании стратегии локатора с classnameАтрибут как input.triggerButton .

Независимо от всех изменений и манипуляций, выполненных при публикации соответствующего HTML в вопросе, для отправки последовательность символов для элемента:

<input type="text" name="EMPLOYEE_label" value="" class="" onkeypress="return dtPk(event,this);" onkeydown="return dtKd(event,this);" onchange="dltCh(this,'EMPLOYEE__test');" size="30" wbvalid="true" isresolving="false">

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

  • cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input[name='EMPLOYEE_label'][onchange*='EMPLOYEE__test']"))).sendKeys("Bennett");
    
  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@name='EMPLOYEE_label' and contains(@onchange, 'EMPLOYEE__test')]"))).sendKeys("Bennett");
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...