通过Selenium的WebElement.sendKeys(CharSequence ...)仅发送部分值

时间:2019-04-29 18:10:28

标签: google-chrome selenium-webdriver webdriver selenium-chromedriver sendkeys

在输入元素中设置值:

WebElement input = ...
input.sendKeys("1234989");

有时候,输入元素只会得到“ 1”,而不是“ 1234989”,这里有任何竞争条件吗?

另一种方式:

Actions actions = new Actions(driver);
actions.sendKeys(input, "1234989").build().perform();

这似乎更好。有什么区别?

1 个答案:

答案 0 :(得分:0)

所需元素的相关HTML可以帮助我们调试为何仅用 1 而不是 1234989 填充所需元素的原因。但是,按照最佳做法,在向input字段发送字符序列时,应始终为elementToBeClickable()引入 WebDriverWait ,如下所示:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("css_input_element"))).sendKeys("1234989");

您可以在以下位置找到一些相关的讨论


sendKeys(WebElement target, java.lang.CharSequence... keys)

sendKeys(WebElement target, java.lang.CharSequence... keys)来自Actions类,等效于调用Actions.click(element).sendKeys(keysToSend)。此方法不同于WebElement.sendKeys(CharSequence...)


public Actions sendKeys(java.lang.CharSequence... keys)

public Actions sendKeys(java.lang.CharSequence... keys) CharSequence 发送到活动元素。同样,这与在活动元素上调用WebElement.sendKeys(CharSequence...)有两种不同:

  • 此调用中包含的修饰键不会释放。
  • 没有尝试重新定位元素,因此sendKeys(Keys.TAB)用于切换元素应该起作用。

您可以在When using Selenium's click_and_hold method exactly what conditions or actions cause the mouse click to release?

中找到详细的讨论