如何通过selenium webdriver中的sendKeys传递变量?

我想在下面的程序中通过sendKeys传递浮点变量’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((f6)) { 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; } 

将float转换为字符串:

 webDriver.findElement(By.xpath("...")).sendKeys(Float.toString(f)); 

我知道你已经接受了答案但我想稍微清理你的代码并给你一些反馈。

  1. 我更改了函数的名称,因为名为isEditable()的函数应该返回一个boolean指示某个字段是否可编辑。 这不是你的function所做的,所以应该给它一个更合适的名字。 我猜测了实际的名字应该是什么……我可能会离开但是你应该把它命名为更实际的东西…把文字放在一个字段中。

  2. 我删除了isEnabled()检查,因为这应该在设置基金号的函数中完成。 每个function应该做一件事,只做一件事。 此函数validation传递的速率是否在有效范围内,然后将其放入字段中。

  3. 我删除了两次抓取INPUT的重复代码。 只需执行一次,将其保存在变量中,然后重用该变量。 在这种情况下,没有必要刮两次。

  4. 并且正如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; } 

你能尝试传递s1而不是f 。 因为该方法采用字符串,而不是浮点数。

您的方法应如下所示:

 String selector = "expression"; webDriver.findElement(By.xpath(selector)).sendKeys(f); 

请使用更好的变量名称,如userInput而不是s1userInputAsFloat而不是finvestmentInputVisible而不是bool等。