Selenium点击浏览器的网址,而不是网站的搜索框

时间:2015-07-09 19:08:07

标签: java selenium xpath

我正在尝试自动化Amazon.in的搜索框,当我尝试在那里输入一些字符串时,它指向浏览器的地址栏。我的代码相同。

注意 - 我已经尝试过使用firebug和标记遍历的不同xpath。

另外请告诉我为什么我们必须使用始终构建和执行操作的方法?

public static void main(String args[])
{
    WebDriver driver= new FirefoxDriver();
    driver.get("http://amazon.in");
    Actions action=new Actions(driver);
    WebElement element= driver.findElement(By.xpath(".//*[@id='nav-link-yourAccount']/span[2]"));
    action.moveToElement(element).build().perform();
    WebElement search= driver.findElement(By.xpath(".//*[@id='twotabsearchtextbox']"));
    action.keyDown(Keys.SHIFT).moveToElement(search).sendKeys("teststring").build().perform();
    action.contextClick(search).build().perform();
}

1 个答案:

答案 0 :(得分:-1)

    public static void main(String args[]) {
        WebDriver driver = new FirefoxDriver();
        driver.get("http://amazon.in");
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        Actions action = new Actions(driver);
        WebElement search = driver.findElement(By.xpath(".//*[@id='twotabsearchtextbox']"));

        //Search using actions by combining entering search string and then hit enter
        action.click(search).sendKeys("Test").sendKeys(Keys.RETURN).build().perform();

        // This also works where it does the same without actions class
        search.sendKeys("test");
        search.sendKeys(Keys.RETURN);
    }

在您的代码中:

下面的行将teststring输入浏览器搜索而不是亚马逊搜索栏,因为您只是移动到该元素而不是单击它。 action.keyDown(Keys.SHIFT).moveToElement(search).sendKeys("teststring").build().perform();

这就像点击右键/上下文点击搜索栏一样 action.contextClick(search).build().perform();

来自API doc:

  

build()生成一个包含目前为止所有操作的复合操作,   准备好执行(并重置内部构建器状态,所以   后续对build()的调用将包含新的序列。

     

perform()用于执行动作的便捷方法   首先调用build()

请阅读以下链接,了解他们的清晰图片:
LinkOne
LinkTwo