selenium - 无法与元素交互
问题描述
从下面的 HTML 代码片段中,我必须单击具有值的单选按钮Same as user name
<fieldset class="setPwd" style="padding:0.769rem 1.15rem;">
<legend>Set Password </legend>
<input type="radio" name="scheme" id="New" value="Default" checked="">Default
<input type="radio" name="scheme" id="Username" value="Same as user name">Same as user name
<br><br>
<input type="text" style="display:none">
<input type="password" onpaste="return false" ondrop="return false" id="password" name="password" maxlength="40" autocomplete="off" style="width:66%;padding:0.00rem;">
</fieldset>
因此点击它,我 -
driver.findElement(By.id("Username")).click();
但这会导致错误-
org.openqa.selenium.ElementNotInteractableException: element not interactable
(Session info: chrome=83.0.4103.116)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'DT01', ip: '192.16', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_172'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 83.0.4103.116, chrome: {chromedriverVersion: 83.0.4103.39 (ccbf011cb2d2b..., userDataDir: C:\Users\gajanan\AppData\Lo...}, goog:chromeOptions: {debuggerAddress: localhost:54490}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: WINDOWS, platformName: WINDOWS, proxy: Proxy(), setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:virtualAuthenticators: true}
Session ID: eedc94ffa7211db6c7252bb85421992a
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:276)
at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:83)
at org.test.selenium.FramTestBhanu.highlightParentElementTest(FramTestBhanu.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:73)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)
考虑到它的html片段,在识别元素方面我应该纠正什么吗?
注意手动我可以单击元素。
解决方案
您应该等待该元素可见
if (!driver.findElement(By.id("Username")).isSelected()) {
driver.findElement(By.id("Username")).click();
}
使用这个代码段
推荐阅读
- java - 在 Java 中具有组合的 Setter 和 getter
- android - ViewPager remove fragments from backStack
- bootstrap-4 - Uncaught TypeError: Cannot convert object to primitive value(zone-evergreen.js:171)
- java - 当 JPA 中的字段为 LocalDateTime 时,如何找到今天创建的每个实例?
- scheme - Scheme get last command in guile
- javascript - stopImmediatePropagation on mat-expansion-panel not working after upgrading to Angular 9
- java - FCM Listview but I can not list
- arrays - if 语句中的错误数组下标
- python - 使用 argparse 库从 unix 中的命令行收集输入文件
- javascript - Material-UI @page 规则?