簡體   English   中英

Java:Selenium Webdriver 在輸入自動格式時無法 sendKeys()

[英]Java: Selenium Webdriver fails to sendKeys() when input auto-formats

我想用 selenium webdriver 填充網站上的輸入字段。 輸入字段如下所示:

<input type="text" pattern="[0-9,.]*" class="checkThousandSeparator hideNumberSpin" name="metal" tabindex="1" id="metal" value="0" onblur="updateVariables();" onkeyup="checkRessourceByType('metal'); updateVariables();" onkeypress="return submitOnEnter(event);">

所以我以前在填寫輸入字段時從來沒有遇到過問題。 但是這個會自動格式化輸入,所以如果你輸入 24424,它會自動生成 24.424。

如果我現在使用 Webdriver 輸入一個值,我可以輸入它(例如 4200),然后輸入字段會生成 4.200。 但是當我提交屬於輸入字段的表單時,它會將值更改為 0。瘋狂的是,如果我輸入一個低於 1000 的值並且輸入字段不需要對其進行格式化,我可以提交正確的數字。 有誰知道為什么?

我已經嘗試過的:

  • 睡覺
  • 使用 sendKeys 進行較慢的輸入(因此只有 1 個字符,然后等待 300 毫秒)

但兩者都沒有幫助。 這是我的代碼 -

//doesn't work, form will submit a "0"
int met = 4200;
driver.findElement(By.id("metal")).sendKeys(Integer.toString(met));

//works, form submits the right value
int met = 200;
driver.findElement(By.id("metal")).sendKeys(Integer.toString(met));

沒有錯誤或任何東西

編輯:我忘了說:如果我使用 selenium Webdriver 輸入值,表單只會無法提交正確的值。 如果我手動輸入值,表單總是提交正確的值,即使它大於 1000。
Edit2 解決方案:好的。 不需要使用 sendKeys()-Method,而是需要通過 JavaScriptExecuter 設置值。

//This works:
int met = 550000;
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById('metal').setAttribute('value', '"+met+"')");

您可以使用 selenium 刪除模式屬性和類屬性。 然后你可以嘗試輸入你想要的值。

試試看

你描述的行為對我來說聽起來像是一個錯誤。 假設當您手動輸入時不會發生這種情況,可能是由於 Selenium 非常快速地“按下”鍵造成的。

每次按下按鍵后稍等一下可能會有所幫助:

String[] digits = "200".split("");
for (String digit : digits) {
    inputElement.sendKeys(digit);
    Thread.sleep(250);
}

如果不知道這些處理程序的實現,就不可能縮小原因。

你可以試試這個

int met = 4200;
driver.findElement(By.id("metal")).sendKeys("" + met);

還有這個,

String met = "4200";
driver.findElement(By.id("metal")).sendKeys(String.valueOf(met));

或者

driver.findElement(By.id("metal")).sendKeys(Keys.NUMPAD4, Keys.NUMPAD2, Keys.NUMPAD0, Keys.NUMPAD0);

並且還使用JavaScript

JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.getElementById('metal').value='4200';");

試一試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM