簡體   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