2015-11-06 106 views
0

我想在下面的程序中通過sendKeys傳遞浮點變量'f'。可以有人請讓我知道嗎?截至目前,它正在拋出如何在selenium webdriver中通過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

或有任何其他的方式來傳遞變量到EIT箱? – Rahul

回答

0

轉換浮動到字符串:

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

Thankyou.It工作:) – Rahul

+1

@Raghu你應該像下面提到的那樣直接使用String's1'。沒有理由再解析它。所以,而不是'sendKeys(Float.toString(f))'使用'sendKeys(s1)'... – d0x

+0

是的d0x,這也將work.:)爲了繼續用戶可讀性的流程,我希望f通過串。無論如何,謝謝你的答案。 – Rahul

0

你可以嘗試通過s1,而不是f。因爲該方法需要一個字符串,而不是一個浮點數。

你的方法應該是這樣的:

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

而且請用更好的變量名字,如userInput而不是s1userInputAsFloat代替finvestmentInputVisible代替bool

0

I知道你已經接受了一個答案,但我想清理你的代碼,並給你一些反饋。

  1. 我改變了函數的名字,是因爲一個名爲isEditable()函數返回一個boolean表明一些字段是否可編輯。這不是你的功能在做什麼,所以應該給它一個更合適的名字。我猜測了實際的名字應該是什麼......我可能會離開,但你應該把它命名爲更多的東西,以實際上正在做的事情......把文本放在一個字段中。

  2. 我刪除了isEnabled()檢查,因爲這應該在設置資金編號的函數中完成。每個功能都應該做一件事而且只做一件事。此函數驗證通過的速率是否在有效範圍內,然後將其放入字段中。

  3. 我刪除了輸入兩次的重複代碼。只需執行一次,將其保存在一個變量中,然後重用該變量。在這種情況下,不需要刮兩次。

  4. 和D 0 X說,你不應該在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; 
    } 
    
+0

我從你的反饋中學到了一些東西。但是,我知道您的要求不明確。在這裏,只要輸入有效的資金號碼,salescharge字段應該被啓用。因此,邏輯是檢查salesCharge字段是否已啓用,然後相應地輸入值。還有最小值的值。 n最大值。所以,相應的錯誤就會被拋出。希望現在很清楚。 – Rahul