2017-01-10 28 views
0

私はユーザが項目&を検索すると、検索結果が出てくるとサービスサイズ&をクリックするというシナリオを自動化しようとしています。セレンのwebdriverの要素divを見つけることができません

enter image description here

しかし、私は常に私も、すべてのロケータを再生しようとした後、数量サイズを選択することにより、値&を変更することでテキストフィールドを操作しようとしている要素が見つからない例外を取得していますこれらの要素(テキストボックス、いくつかのボタンをドロップ)が発生するそのdivタグのために。これらの要素がフレームの下にないことを確認しました。私はまた、操作を実行するためにJavaScriptを注入しようとしましたが、役に立たない。 誰かが間違っているところを指摘してくれますか?

<div id="loaded_item"> 
<input id="food_entry_food_id" type="hidden" name="food_entry[food_id]" value="348096022"> 
<input id="food_entry_date" type="hidden" value="2017-01-10" name="food_entry[date]"> 
<p class="food-description">Bananas, raw</p> 
<div class="verified-food-container" style="display: block;"> 
<div class="user_submitted"></div> 
<p></p> 
<h3 class="secondary-title">How much?</h3> 
<input id="food_entry_quantity" class="text short" type="text" size="30" name="food_entry[quantity]" autocomplete="off" value="1.0"> 
servings of 
<select id="food_entry_weight_id" class="select" name="food_entry[weight_id]"> 
<p></p> 
<p></p> 
<h3 class="secondary-title">To which meal?</h3> 
<select id="food_entry_meal_id" class="select" name="food_entry[meal_id]"> 
<p></p> 
<input id="update_servings" class="button log" type="submit" value="Add Food To Diary" data-food-id="348096022" data-external-id="63109870792493" data-version-id="197946116099837"> 
<div class="nutritional_info"> 
</div> 

以下は、これらの要素を見つけるためのコードです。

  @FindBy(xpath=".//*[@id='searchFoodByName']/form/p/input[4]") 
      WebElement searchFoodDatabaseButton; 

      @FindBy(linkText = "Bananas, raw") 
      WebElement matchedFoodThirdOption; 

       @FindBy(xpath="//div[@id='loaded_item']/input[@id='update_servings']") 
      WebElement addFoodToDiary; 

      @FindBy(xpath=".//*[@id='date_controls']/form/span/a[2]") 
      WebElement clickOnNextDate; 

      @FindBy(xpath=".//*[@id='food_entry_quantity']") 
      WebElement foodEntryQuantity; 

      @FindBy(css = "select[id='food_entry_weight_id']") 
      WebElement foodEntryWeight; 

      @FindBy(css = "select[id='food_entry_meal_id']") 
      WebElement addFoodToMeal; 


      public void searchFoodItem() throws Exception{ 

          TextBoxHelper.set(driver,searchFoodDatabase,"Banana"); 
          ButtonHelpers.click(driver, searchFoodDatabaseButton); 

          ButtonHelpers.click(driver, matchedFoodThirdOption); 

          Utils.waitForElement(driver, By.xpath(".//*[@id='loaded_item']"), 2000); 

          foodEntryQuantity.clear(); 
          foodEntryQuantity.sendKeys("2.0"); 

          Select WeightPickerDropDown = new Select(foodEntryWeight); 
          WeightPickerDropDown.selectByIndex(2); 

          Select MealPickerDropDown = new Select(addFoodToMeal); 
          MealPickerDropDown.selectByIndex(2); 

          ButtonHelpers.jsClick(driver, addFoodToDiary); 
          System.out.println("after clicking the add button"); 

      } 
+0

間違っている可能性があります。 (どのように 'p'タグが' select'にありますか?) –

+0

@MoshFeu HTMLマークアップは私が自動化しようとしているウェブサイトからのものです。 – AdiBoy

+0

私は理解していますが、おそらくそれが問題です。私はこれに慣れていませんが、スクリプトはこれに伴って中断することになりますが、私には分かりません。 –

答えて

0

あなたJavascriptExecutorコードは、HTMLが無効である

((JavascriptExecutor) driver).executeScript("arguments[0].setAttribute('value', '2.0')", WebElement); 
+0

ブログをありがとう、私はそれを見てみましょう。しかし、javscriptコードは私がうまくいくと思っていたソリューションの1つです。カスタムクリック&その他のソリューションを使用しましたが、運はありません。 – AdiBoy

+0

あなたが共有したものを使ってみましたが、まだ要素を見つけることができません。 – AdiBoy

+0

waitForElementToBeVisible.Checkを実行すると、どのようなメッセージが表示されるのですか?最初に要素が表示されているかどうかを確認しますか? –

関連する問題