繁体   English   中英

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

[英]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代替s1userInputAsFloat代替finvestmentInputVisible代替bool等。

将float转换为字符串:

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

我知道您已经接受了答案,但是我想稍微整理一下代码并给您一些反馈。

  1. 我更改了函数的名称,因为名为isEditable()的函数应返回一个boolean指示某个字段是否可编辑。 那不是您的函数正在执行的操作,因此应给它一个更合适的名称。 我猜测实际名称应该是什么...我可能还差得远,但是您应该按照实际操作的方式来命名它...将文本放在字段中。

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

  3. 我删除了重复输入两次的重复代码。 只需执行一次,将其保存在变量中,然后重复使用该变量。 在这种情况下,无需刮擦两次。

  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; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM