我想传递浮点变量' f'通过sendKeys在下面的程序。有人请让我知道相同吗?截至目前,它正在抛出
" 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;
}
答案 0 :(得分:0)
您可以尝试传递s1
而不是f
。因为该方法采用字符串,而不是浮点数。
您的方法应如下所示:
String selector = "expression";
webDriver.findElement(By.xpath(selector)).sendKeys(f);
请使用更好的变量名称,例如userInput
,而不是s1
或userInputAsFloat
,而不是f
或investmentInputVisible
,而不是bool
等。
答案 1 :(得分:0)
将float转换为字符串:
webDriver.findElement(By.xpath("...")).sendKeys(Float.toString(f));
答案 2 :(得分:0)
我知道你已经接受了答案,但我想稍微清理你的代码并给你一些反馈。
我更改了该函数的名称,因为名为isEditable()
的函数应返回boolean
,指示某个字段是否可编辑。这不是你的功能所做的,所以应该给它一个更合适的名字。我猜测了实际名称应该是什么......我可能会离开但是你应该把它命名为它实际上做的更多的东西......把文字放在一个字段中。
我删除了isEnabled()
支票,因为这应该在设置基金编号的功能中完成。每个函数都应该做一件事而且只做一件事。此函数验证传递的速率是否在有效范围内,然后将其放入字段中。
我删除了两次抓取INPUT的重复代码。只需执行一次,将其保存在变量中,然后重用该变量。在这种情况下,不需要刮两次。
正如d0x所说,你不应该将s1
字符串转换为float
,然后在string
时转回sendKeys()
。 。只需发送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;
}