2016-12-07 9 views
0

リストを作成できるサイトを自動化しようとしています。 このリストは、テキストフィールドに値を入力し、テキストフィールドの外でマウスをクリックして値を設定することによって作成されます。 前の手順を繰り返して、リストに要素を追加入力します。 Internet Explorerを使用しているので、IEでSelenium webdriverを使用しています。 sendKeysメソッドは非常に遅いので、私はaddscriptメソッドを使いたいと思います。複数の引数を指定してaddscript seleniumメソッドを使用できません

私はこれを次のように試みています(動作していません)。誰か提案があるかどうかを知りたいと思います。

コードフラグメント:

//Here I declare an arry with the values for the list to be created 

String valores[] = {"18","25","60","71"}; 

//Here I get the WebElement where I'm going to enter the above values one by one 

WebElement searchField = driver.findElement(By.xpath("//label[text()='New value:']/parent::div//input[@type='text']")); 

JavascriptExecutor myExecutor6 = ((JavascriptExecutor) driver); 

//Now I’m trying to use a for cycle to enter the values one by one, I need to do this, because this is how the UI works  

for(int i=0; i<valores.length; i++){ 
     System.out.println(valores[i]); 
     Thread.sleep(3000); 
/*this part is not working, here what I’m trying to do is: I’m trying to write the value of array valores in position ‘i’ in the text field indicated by the WebElement searchField */ 
/*I have a javascript error, I do notunderstand what is wrong*/ 

     myExecutor6.executeScript("var valueToWrite = valores[i].toString();" 
+"arguments[0].value = valueToWrite ",searchField, valores[i]); 

     Thread.sleep(3000); 

//This step clicks somewhere else with the mouse to enter the value, 
     driver.findElement(By.xpath("//label[text()='Values:']")).click(); 
     Thread.sleep(3000); 
    } 
+4

エラーは何ですか? – Guy

+0

私はコードを変更しましたが、まだ失敗していました、そして、私はjavascriptでfocus()メソッドを使いました。助けてくれてありがとう。 for(int i = 0; i

答えて

0

私は、それはまだ失敗していた、同じ問題を、コードを変更しました。 javascriptでは、要素に焦点を当てるのは難しいことです。これは問題を解決しました 引数[0] .focus();

お手数ですが、

新しいコード:

 
public static void createList(WebDriver driver, String array[]) throws InterruptedException{

String[] values = array.clone(); String iterationNumber; JavascriptExecutor myExecutor = ((JavascriptExecutor) driver); for(int i=0; i<values.length; i++){ System.out.println(values[i]); Thread.sleep(1000); iterationNumber = values[i]; myExecutor.executeScript("arguments[0].focus();"+"arguments[0].value = arguments[1];",driver.findElement(By.xpath("//label[text()='New value:']/parent::div//input[@type='text']")), iterationNumber); Thread.sleep(1000); driver.findElement(By.xpath("//label[text()='Values:']")).click(); Thread.sleep(1000); driver.findElement(By.xpath("//label[text()='New value:']/parent::div/div/div[2]/button")).click(); Thread.sleep(1000); } }