2017-09-27 6 views
0

私はDateFieldの内容をクリアすることを試みてきました。私はこれを使用する場合:セレンのClearFieldを

driver.findElement(By.id(componentID)).clear(); 

を私は次のエラーを取得する:

org.openqa.selenium.InvalidElementStateException: Element must be user-editable in order to clear it. 
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' 
System info: host: 'CMTCLX62137', ip: '53.19.229.176', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_31' 
Driver info: org.openqa.selenium.firefox.FirefoxDriver 
Capabilities [{moz:profile=C:\Users\ALEX\AppData\Local\Temp\rust_mozprofile.eDpIfGCA0yf9, rotatable=false, timeouts={implicit=0.0, pageLoad=300000.0, script=30000.0}, pageLoadStrategy=normal, platform=ANY, proxy=Proxy(manual, http=localhost), specificationLevel=0.0, moz:accessibilityChecks=false, acceptInsecureCerts=true, browserVersion=55.0.3, platformVersion=6.1, moz:processID=9764.0, browserName=firefox, javascriptEnabled=true, platformName=windows_nt}] 
Session ID: e1be04d2-d90e-4319-8b55-fc8d147ae48c 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:150) 
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:115) 
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:45) 
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164) 
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637) 
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:272) 
    at org.openqa.selenium.remote.RemoteWebElement.clear(RemoteWebElement.java:114) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
    at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48) 
    at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48) 
    at org.junit.rules.RunRules.evaluate(RunRules.java:20) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 

私はその後、すべてのコンテンツを選択し、このように、Keys.DELETEを送信しようとした:

WebElement element = driver.findElement(By.id(componentID)); 
Actions actions = new Actions(driver); 
actions.moveToElement(element); 
actions.keyDown(Keys.CONTROL).sendKeys(Keys.chord("A")).keyUp(Keys.CONTROL).perform(); 

問題それは、DateField内のテキストではなくページ全体を選択するということです。

フィールド内のテキストだけを選択する方法、または何らかの理由でそれを消去する方法は、誰でも知っていますか?

[EDIT]ここ

は私がクリアしようとしているコンポーネントのhtmlです:

   <div class="row"> 
        <div class="col-md-4"> 

         <div class="form-group"><label for="Form:asof">As Of</label><span id="Form:asof" class="ui-calendar"><input id="Form:asof_input" name="Form:asof_input" type="text" value="2017-09-26 00:00:00.000" class="ui-inputfield ui-widget ui-state-default ui-corner-all" /></span><script id="Form:asof_s" type="text/javascript"> 
         </div> 
        </div> 
       </div> 
+0

消去しようとしている要素のHTML DOMを教えてもらえますか? –

+0

@santhoshkumar、htmlパーツで投稿を編集しました。 –

+2

このIDで試してみることはできますか?フォーム:asof_input –

答えて

0

ベストです@santoshソリューションを追加するには、あなたが名前を使用することができますロケータとして

driver.findElement(By.name("Form:asof_input")); 

コメントで述べたようにのxpath

driver.findElement(By.xpath("//input[@name='Form:asof_input']")); 

または

driver.findElement(By.xpath("//input[@id='Form:asof_input']")); 
+0

@santhosh kumarのコメントにはすでに質問が答えられました。 OPがそれを試みたことがない理由は、私の外にあります。要求に応じて貼り付けられたHTMLには、口頭での質問のIDが表示されないためです。何らかの理由で「componentID」が単なる場所に設定されていない限り。 – IamBatman

+1

@alexanderはsantoshの解決策として働いていますが、名前とxpathも使用できます – iamsankalp89

+1

@IamBatmanはい正しい – iamsankalp89

1

を使用することができ、私は私の下の答えを与えています。

テキストフィールドについて話している、ので、それは入力タグであると線の下にこれを試してみている、

driver.findElement(By.id("Form:asof_input")).clear(); 

・ホープ、このことができます。ありがとう。

+0

これはOPのコメントのOPの質問に対する解決策だったので、これを答えとして受け入れるべきです。 – IamBatman