[英]how to pass a variable through sendKeys in selenium webdriver?
我想在下面的程序中通過sendKeys傳遞float變量'f',有人可以讓我知道嗎? 截至目前,它正在拋出
“ WebElement類型的方法sendKeys(CharSequence ...)不適用於參數”。
碼:
public static String isEditable(String s1) {
f=Float.parseFloat(s1);
System.out.println(f);
boolean bool=webDriver.findElement(By.xpath("expression")).isEnabled();
if(bool) {
if((f<0) || (f>6)) {
error="Value must be between 0.00% and 6.00%";
System.out.println(error);
} else {
webDriver.findElement(By.xpath(""expression")).sendKeys(f);
}
} else {
error="Please enter a valid Number";
}
return error;
}
您可以嘗試傳遞s1
而不是f
嗎? 因為該方法采用字符串,而不是浮點數。
您的方法應如下所示:
String selector = "expression";
webDriver.findElement(By.xpath(selector)).sendKeys(f);
並且請使用更好的變量名,例如userInput
代替s1
或userInputAsFloat
代替f
或investmentInputVisible
代替bool
等。
將float轉換為字符串:
webDriver.findElement(By.xpath("...")).sendKeys(Float.toString(f));
我知道您已經接受了答案,但是我想稍微整理一下代碼並給您一些反饋。
我更改了函數的名稱,因為名為isEditable()
的函數應返回一個boolean
指示某個字段是否可編輯。 那不是您的函數正在執行的操作,因此應給它一個更合適的名稱。 我猜測實際名稱應該是什么...我可能還差得遠,但是您應該按照實際操作的方式來命名它...將文本放在字段中。
我刪除了isEnabled()
檢查,因為這應該在設置基金編號的函數中完成。 每個函數應該做一件事,而只能做一件事。 此函數驗證傳遞的速率在有效范圍內,然后將其放入字段中。
我刪除了重復輸入兩次的重復代碼。 只需執行一次,將其保存在變量中,然后重復使用該變量。 在這種情況下,無需刮擦兩次。
正如d0x所說,您不應該將s1
字符串轉換為float
,然后在sendKeys()
...時返回到string
...只是發送s1
字符串。 將其翻譯回去並不會提高可讀性,僅意味着您編寫了更多需要別人理解的代碼。 喜歡干凈的代碼……它總是更具可讀性。
public static String enterRate(String s1) { f = Float.parseFloat(s1); WebElement input = webDriver.findElement(By.xpath(".//*[@id='p_InvestmentSelection_4113']/div/div/div[5]/div/ul/li/div[3]/div[2]/label/div[1]/input")); if ((f < 0) || (f > 6)) { error = "Value must be between 0.00% and 6.00%"; } else { input.sendKeys(s1); } return error; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.