问题描述
我可以单击该用户名字段,但无法传递该字段中的值。面对以下错误。
driver.get("xxxx");
webdriverwait wait = new webdriverwait(driver,60);
WebElement username = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("xxxx")));
username.click();
username.sendKeys("xxxxxxxx");
我收到的错误 -
处理命令时发生未知的服务器端错误。 原始错误:未知错误:无法聚焦元素(会话信息: 铬=69.0.3497.100)
解决方法
您可以使用 click()、clear() 和 sendkeys() 组合,它对我有用:
username.click();
username.clear();
username.sendkeys("xxxx")
这个错误信息...
An unknown server-side error occurred while processing the command. Original error: unknown error: cannot focus element (Session info: chrome=69.0.3497.100)
...表示 Selenium 无法聚焦所需元素。
要调用 sendKeys()
而不是 visibilityOfElementLocated()
,您需要为 elementToBeClickable()
引入 WebDriverWait,您可以使用以下任一 Locator Strategies:
-
id
:WebElement username = new WebDriverWait(driver,20).until(ExpectedConditions.elementToBeClickable(By.id("xxxx"))); username.click(); username.clear(); username.sendKeys("xxxxxxxx");
-
cssSelector
:WebElement username = new WebDriverWait(driver,20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("#xxxx"))); username.click(); username.clear(); username.sendKeys("xxxxxxxx");
-
xpath
:WebElement username = new WebDriverWait(driver,20).until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='xxxx']"))); username.click(); username.clear(); username.sendKeys("xxxxxxxx");
其他注意事项
确保:
- JDK 升级到当前级别 JDK 8u271。
- Selenium 已升级到当前发布的 Version 3.141.59。
- ChromeDriver 已更新至当前 ChromeDriver v87.0 级别。
- Chrome 已更新至当前的 Chrome 版本 87.0。 (按照ChromeDriver v87.0 release notes)。
- 如果您的基本 Web Client 版本太旧,请卸载它并安装 Web Client 的最新 GA 和发布版本。