2015-04-01 54 views
0

enter image description here我試圖執行一些操作與硒的webdriver用java如下選擇或斷言值

1.open亞馬遜網站在搜索文本字段 2,型號的iPad - 這顯示幾對文本的建議 3.執行類似於選擇或打印建議中項目數量的操作

當我這樣做時,我觀察到的是與DOM中未顯示的建議相關的html代碼(純Ajax響應),如果是這種情況,我該如何執行任何操作,如使用selenium webdriver隨機選擇一個項目。

另一點是,鍵入ipad後點擊go,然後重新輸入ipad將提供具有html代碼的DOM建議。

但我需要評估,而我第一次鍵入。

請提供您的suggestions.Attached是截圖

回答

0

您可以隨時通過檢查在它有元素。進入元素,點擊檢查火線路,它會給你xpath或css你在那裏做了什麼。雖然它不會爲您提供HTML,因爲它被隱藏。所以在你的情況下,每個元素都附有一個唯一的ID。爲了讓所有的元素做:

d.findElement(By.id("twotabsearchtextbox")).sendKeys("iPhone"); 
List<WebElement> lst = d.findElements(By.xpath(".//*[contains(@id,'issDiv')]")); 
for (WebElement webElement : lst) { 
    System.out.println(webElement.getText()); 
} 

要通過索引點擊做到:

List<WebElement> lst = d.findElements(By.xpath(".//*[contains(@id,'issDiv')]")); 
for (WebElement webElement : lst) { 
    if (webElement.getText().equalsIgnoreCase("your item to select")) 
     webElement.click(); 
} 
+0

但只要我右擊在建議列表中的項目列表中消失,我沒有得到的元素inspection.Also,該issDiv不會出現在DOM當我們在搜索欄中輸入。 – sam6 2015-04-01 11:36:42

0

是確實的自動搜索建議:

lst.get(4).click(); 

或基於文本,您可以做到這一點面板不可記錄或通過開發人員工具識別。但我們仍然可以根據輸入框中鍵入的前兩個字符來選擇搜索建議。以下是我自動化的亞馬遜java類中的一種方法,其中有兩個符合hods-從下拉菜單中選擇產品類型,然後選擇其他類型來輸入搜索文本,說「Java」,然後從自動搜索建議中選擇第三個選項。

import org.openqa.selenium.firefox.*; 
import org.openqa.selenium.interactions.*; 
import org.openqa.selenium.support.ui.Select; 

import java.util.ArrayList; 
import java.util.List; 
import java.util.concurrent.TimeUnit; 

import org.openqa.selenium.By; 
import org.openqa.selenium.Keys; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 

public class AutomateAmazon1 { 

    static WebDriver driver=new FirefoxDriver(); 
    Actions action=new Actions(driver); 
    //method to select a given "book" product category from drop down 
    public void selectAllorSingleProductAMZ() 
    { 
     action.moveToElement(driver.findElement(By.cssSelector("div.nav-search-scope.nav-sprite"))).build().perform(); 
     WebElement productsearchdd_nav=driver.findElement(By.cssSelector("select#searchDropdownBox")); 
     Select productsearchdd=new Select(productsearchdd_nav); 
     List<WebElement> productsearchddoptionsele=productsearchdd.getOptions(); 
     ArrayList<String> productsearchddoptionstext=new ArrayList<String>(); 
     for(WebElement we:productsearchddoptionsele) 
     { 
      productsearchddoptionstext.add(we.getText()); 
     } 
     System.out.println(productsearchddoptionstext); 

     for(String s:productsearchddoptionstext) 
     { 
      if(s.toString().contentEquals("Books")) 
      { 
       productsearchdd.selectByVisibleText("Books"); 
      } 
     } 
    } 
    //method to input product search text and select third option from //auto search suggestions 
    public void searchforSelectedPTAMZ() 
    { 
//input search text "ja" in search box  
driver.findElement(By.cssSelector("div.nav-search-field>input#twotabsearchtextbox.nav-input")).sendKeys("ja"); 
//move to first option on auto search suggestions using keyboard down //arrow key selection actions 
     action.moveToElement(driver.findElement(By.cssSelector("div.nav-search-field>input#twotabsearchtextbox.nav-input"))).sendKeys(Keys.ARROW_DOWN).build().perform(); 
//move to second option on auto search suggestions using keyboard down //arrow key selection actions 
     action.moveToElement(driver.findElement(By.cssSelector("div.nav-search-field>input#twotabsearchtextbox.nav-input"))).sendKeys(Keys.ARROW_DOWN).build().perform(); 
     action.moveToElement(driver.findElement(By.cssSelector("div.nav-search-field>input#twotabsearchtextbox.nav-input"))).sendKeys(Keys.ARROW_DOWN).build().perform(); 
//finally press enter to choose the selection from auto search suggestions //and input will be autofilled  
action.moveToElement(driver.findElement(By.cssSelector("div.nav-search-field>input#twotabsearchtextbox.nav-input"))).sendKeys(Keys.ENTER).build().perform(); 
    } 

    public static void main(String[] args) 
    { 
     driver.get("http://www.amazon.in/"); 
     driver.manage().window().maximize(); 
     driver.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS); 
     driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS); 
     AutomateAmazon1 runscriptest1= new AutomateAmazon1(); 
     runscriptest1.selectAllorSingleProductAMZ(); 
     runscriptest1.searchforSelectedPTAMZ(); 

    } 

}