Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从搜索建议中选择或断言值_Java_Selenium - Fatal编程技术网

Java 从搜索建议中选择或断言值

Java 从搜索建议中选择或断言值,java,selenium,Java,Selenium,我正在尝试使用SeleniumWebDriver和java执行一些操作,如下所示 1.开放亚马逊网站 2.在搜索文本字段中键入ipad-该字段显示对文本的少量建议 3.执行操作,如选择或打印建议中的项目数 在我这么做的时候,我观察到的是与DOM纯ajax响应中从未出现的建议相关的html代码,如果是这种情况,我如何执行任何操作,比如使用selenium webdriver随机选择项目 另一点是,在键入ipad并单击go之后,再次键入ipad将为DOM提供html代码以供建议 但我需要在第一次打字

我正在尝试使用SeleniumWebDriver和java执行一些操作,如下所示

1.开放亚马逊网站 2.在搜索文本字段中键入ipad-该字段显示对文本的少量建议 3.执行操作,如选择或打印建议中的项目数

在我这么做的时候,我观察到的是与DOM纯ajax响应中从未出现的建议相关的html代码,如果是这种情况,我如何执行任何操作,比如使用selenium webdriver随机选择项目

另一点是,在键入ipad并单击go之后,再次键入ipad将为DOM提供html代码以供建议

但我需要在第一次打字时进行评估


请提供您的建议。附件是屏幕截图,您可以随时查看该元素。进入元素,单击firepath中的inspect,它将为您提供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();
}

是的,自动搜索建议面板确实无法通过开发人员工具记录或识别。但我们仍然可以根据输入框中键入的前两个字符选择搜索建议。下面是我的自动amazon java类中的一个方法,其中有两个方法-一个用于从下拉列表中选择产品类型,另一个用于键入搜索文本,sayJava并从自动搜索建议中选择第三个选项

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();

    }

}

但是,只要我右键单击建议列表中的某个项目,该列表就会消失,并且我无法进行元素检查。此外,当我们在搜索字段中键入时,issDiv将不会出现在DOM中。
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();

    }

}