gpt4 book ai didi

java - 在月份下拉列表中选择值 - Selenium Webdriver

转载 作者:行者123 更新时间:2023-11-30 04:03:20 25 4
gpt4 key购买 nike

enter image description here

目前正在研究 Selenium Web 驱动程序和 Java。我想选择日期选择器形式的选项。我尝试从日期选择器下拉列表中选择月份。但显示如下无法定位元素:{“method”:“class name”,“selector”:“ui-datepicker-month”}命令持续时间或超时:31 毫秒

所以我需要使用java脚本执行器使元素可见,但在下面的代码中我编写为“document.getElementById('ui-datepicker-month')所以它再次显示错误为”文档。 getElementById('') 为 null

这是 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");

下面是堆栈跟踪:

失败:登录 java.lang.NullPointerException 在 com.google.common.base.Preconditions.checkNotNull(Preconditions.java:192) 在 org.openqa.selenium.support.ui.FluentWait。(FluentWait.java:94) 在 org.openqa.selenium.support.ui.WebDriverWait。(WebDriverWait.java:66) 在 org.openqa.selenium.support.ui.WebDriverWait。(WebDriverWait.java:40) 在 test.OverviewAndEvolutionPR.performLogin(OverviewAndEvolutionPR.java:525) 在测试.OverviewAndEvolutionPR.Login(OverviewAndEvolutionPR.java:76) 在 sun.reflect.NativeMethodAccessorImpl.invoke0( native 方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(来源未知) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(来源未知) 在 java.lang.reflect.Method.invoke(来源未知) 在 org.testng.internal.MethodInitationHelper.invokeMethod(MethodInitationHelper.java:84) 在 org.testng.internal.Invoker.invokeMethod(Invoker.java:714) 在 org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) 在 org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) 在 org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) 在 org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) 在 org.testng.TestRunner.privateRun(TestRunner.java:767) 在 org.testng.TestRunner.run(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) 在 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)

最佳答案

首先,“不工作”是什么意思?什么都没发生?异常(exception)情况?请解释清楚。

我现在无法测试 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 文档 here 中查找方法.

按值选择

Select all options that have a value matching the argument. That is, when given "foo" this would select an option like: Bar

按可见文本选择

Select all options that display text matching the argument. That is, when given "Bar" this would select an option like: Bar

关于java - 在月份下拉列表中选择值 - Selenium Webdriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21447152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com