在chromewebdriver清除日期输入失败(Clear date input fails on

2019-07-21 09:33发布

我遇到了一个问题,同时从firefoxdriver切换与硒chromedriver,它在FF,但现在工作正常,当我试图清除日期输入字段我有这样的错误:

Caused by: org.openqa.selenium.InvalidElementStateException: Element must be user-editable
in order to clear it. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 38 milliseconds
Build info: version: '2.31.0', revision: '1bd294d185a80fa4206dfeab80ba773c04ac33c0',
time: '2013-02-27 13:51:26'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.8.2', java.version: 
'1.6.0_41'
Session ID: cb5a1b7e5f4abc4f2e56e2fe284a9dc3
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{platform=MAC, chrome.chromedriverVersion=26.0.1383.0, acceptSslCerts=false,
javascriptEnabled=true, browserName=chrome, rotatable=false, locationContextEnabled=false,
version=25.0.1364.160, cssSelectorsEnabled=true, databaseEnabled=false, 
handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true,
webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}]
blah blah...

我尝试添加的contenteditable属性,我的输入字段,但没有运气:

  <input type="date" contenteditable="true" required="required" placeholder="YYYY-MM-dd" />

我不知道我是否应该报告或者举报它,但我发现,在相关项目的这些问题是有些相似:

https://github.com/jnicklas/capybara/issues/554

https://github.com/Behat/MinkSelenium2Driver/pull/29

在此期间有任何建议来解决这个bug?

Ren

Answer 1:

作为一种变通方法,您可以选择代表输入字段的webElement和执行

webElement.SendKeys(Keys.Delete);

清场。



Answer 2:

有时候,你可以改变的XPath了一下,得到的是它的工作点:

例如,对于这片DOM的: <tr class="table-filters"><td><input type="text" value=""></td></tr>

如果你使用:

wait.until(ExpectedConditions.visibilityOfElementLocated(By
                    .xpath("//tr[@class='table-filters']//td"))).clear();

它不会工作,但是:

wait.until(ExpectedConditions.visibilityOfElementLocated(By
                    .xpath("//tr[@class='table-filters']//td//input"))).clear();

作品。



Answer 3:

welement.click 
Actions action = new Actions(driver); 
action.sendKeys(Keys.DELETE);
action.sendKeys(webelement,value).build().perform();


Answer 4:

我有一个解决方案,这一点,我已经在Eclipse我ChromeDriver项目只使用。 这也是一个解决办法。

我发现,简单地使用{} webElement.Keys只删除输入字段中的文本的一部分。 所以,你必须先用左箭头键选择整个文本删除。

下面的代码应该ChromeDriver工作。 这是在Java中(使用Eclipse):

private WebDriver driver;
driver= new ChromeDriver();
Actions action = new Actions(driver);
int lenText = driver.findElement(By.xpath(elementLocator)).getText().length();

for(int i = 0; i < lenText; i++){
  action.sendKeys(Keys.ARROW_LEFT);
}
action.build().perform();

for(int i = 0; i < lenText; i++){
  action.sendKeys(Keys.DELETE);
}
Thread.sleep(1000);
action.build().perform();


文章来源: Clear date input fails on chromewebdriver