2014-01-30 2 views
1

enter image description hereВыберите значения в раскрывающемся месяц понижающего Селен WebDriver

В настоящее время работает на Selenium веб-драйвер и Java. Я хочу выбрать вариант, который в форме выбора даты. Я попытался выбрать месяц из списка выбора даты. но он показывает следующее Не удалось найти элемент: { «метод»: «имя класса», «селектор»: «щ-DatePicker-месяц»} длительность команд или тайм-аут: 31 миллисекунды

Так что мне нужно сделать видимым элемент, используя java-скрипт-исполнитель, но в нижнем коде, который я написал как «document.getElementById (« ui-datepicker-month »), так что он снова показывает ошибку как « document.getElementById ('') имеет значение

Вот HTML:

<div class="ui-datepicker-title"> 
<select class="ui-datepicker-month" onchange="DP_jQuery_1391048152193.datepicker._selectMonthYear('#fromDate', this, 'M');"> 
<option selected="selected" value="0">Jan</option> 
<option value="1">Feb</option> 
<option value="2">Mar</option> 
<option value="3">Apr</option> 
<option value="4">May</option> 
<option value="5">Jun</option> 
<option value="6">Jul</option> 
<option value="7">Aug</option> 
<option value="8">Sep</option> 
<option value="9">Oct</option> 
<option value="10">Nov</option> 
<option value="11">Dec</option> 
</select> 

Вот форма я пытался, но он не работает:

JavascriptExecutor executor42 = (JavascriptExecutor)driver; 
executor42.executeScript("document.getElementById('ui-datepicker-month').style.display='block';"); 
List<WebElement> select42 = new Select(driver.findElement(By.className("ui-datepicker-month"))).getOptions(); 
((Select) select42).selectByValue("Jun"); 

Ниже приведены StackTrace:

FAILED: Вход java.lang.NullPointerException в com.google.common.base.Preconditions. checkNotNull (Preconditions.java:192) at org.openqa.selenium.support.ui.FluentWait. (FluentWait.java:94) at org.openqa.selenium.support.ui.WebDriverWait. (WebDriverWait.java:66) на сайте org.openqa.selenium.support.ui.WebDriverWait. (WebDriverWait.java:40) на test.OverviewAndEvolutionPR.performLogin (OverviewAndE volutionPR.java:525) в test.OverviewAndEvolutionPR.Login (OverviewAndEvolutionPR.java:76) в sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) в sun.reflect.NativeMethodAccessorImpl.invoke (Unknown Source) на солнце. reflect.DelegatingMethodAccessorImpl.invoke (Unknown Source) в java.lang.reflect.Method.invoke (Unknown Source) в org.testng.internal.MethodInvocationHelper.invokeMethod (MethodInvocationHelper.java:84) в org.testng.internal. Invoker.invokeMethod (Invoker.java:714) at org.testng.internal.Invoker.invokeTestMethod (Invoker.java:901) at org.testng.internal.Invoker.invokeTestMethods (Invoker.java:1231) at org. testng.internal.TestMethodWorker.invokeTes tMethods (TestMethodWorker.java:127) на org.testng.internal.TestMethodWorker.run (TestMethodWorker.java:111) на org.testng.TestRunner.privateRun (TestRunner.java:767) на org.testng.TestRunner. (TestRunner.java:617) на org.testng.SuiteRunner.runTest (SuiteRunner.java:334) на org.testng.SuiteRunner.runSequentially (SuiteRunner.java:329) на org.testng.SuiteRunner.privateRun (SuiteRunner.java:291) на org.testng.SuiteRunner.run (SuiteRunner.java:240) в org.testng.SuiteRunnerWorker.runSuite (SuiteRunnerWorker.java:52) на org.testng.SuiteRunnerWorker.run (SuiteRunnerWorker. java: 86) at org.testng.TestNG.runSuitesSequentially (TestNG.java:1224) на org.testng.TestNG.runSuitesLocally (TestNG.java:1149) на org.testng.TestNG.run (TestNG.java:1057) на org.testng.remote.RemoteTestNG.run (RemoteTestNG.java:111) на org.testng.remote.RemoteTestNG.initAndRun (RemoteTestNG.java:204) на org.testng.remote.RemoteTestNG.main (RemoteTestNG.java: 175)

ответ

1

Во-первых, что значит «не работает»? Ничего не произошло? Исключения? Объясните это, пожалуйста, пожалуйста.

я не могу проверить Java сейчас, но, пожалуйста, отладить следующее:

// Why are you doing this? Can't you just click to open? 
// I suspect this is why 
JavascriptExecutor executor42 = (JavascriptExecutor)driver; 
executor42.executeScript("document.getElementById('ui-datepicker-month').style.display='block';"); 

// if your code above works, then do the following 
WebElement selectElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.className("ui-datepicker-month"))); 

Select select42 = new Select(selectElement); 
select42.selectByValue("5"); 
// or select42.selectByVisibleText("Jun"); 

Если вы не хотите, чтобы проходная варианту, не используйте getOptions() и беспорядок с List<WebElement>.

Всегда проверяйте методы в API doc here.

selectByValue

Выберите все параметры, которые имеют значение, соответствующее аргумент. То есть, когда дано «Foo» это будет выбрать вариант, как: Бар

selectByVisibleText

Выберите все параметры, которые отображают текст, соответствующий аргумент. То есть, если задано «Бар», это выберет вариант, например: Бар

+0

Я попробовал ваш код выше он показывает java.lang.NullPointerException Почему я добавляю Javascript исполнитель должен сделать видимый элемент – Amirdha

+0

изменен, как вы указали в своем ответе. Затем я получил исключение нулевого указателя, как я упомянул в приведенных выше комментариях. – Amirdha

+0

Теперь я удалил и проверил тогда только я получил проблему исключения нулевого указателя .. Да, я знаю, что я ошибочно проверяю идентификатор, но я просто хочу знать в случае className для JavaScript-исполнителя. – Amirdha

0

Наконец-то я получил ответ на вкладку выбора даты.

Вот код:

Log.info("Clicking on fromDate drop down"); 
driver.findElement(By.id("fromDate")).click(); 
WebElement selectElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.className("ui-datepicker-month"))); 
Select select42 = new Select(selectElement); 
select42.selectByValue("5"); 
Thread.sleep(6000); 

WebElement selectElement1 = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.className("ui-datepicker-year"))); 
Select select43 = new Select(selectElement1); 
select43.selectByValue("2012"); 
Thread.sleep(6000); 

WebElement dateWidget = driver.findElement (By.id ("щ-DatePicker-ДИВ")); Список столбцов = dateWidget.findElements (By.tagName ("td"));

for (WebElement cell: columns){ 
//Select 13th Date 
if (cell.getText().equals("13")){ 
cell.findElement(By.linkText("13")).click(); 
break; 
} 
} 

Благодаря @ user1177636 ..

1

Я решение с использованием QAF

Select select = new Select(new QAFExtendedWebElement("your locator id")) 
    .selectByVisibleText("your text from drop down"); 
Смежные вопросы