繁体   English   中英

带有Java的Selenium Web驱动程序

[英]Selenium Web Driver with Java

如何在Selenium Web驱动程序中的Kayak.co.in/flights/单向页面中识别“搜索”。

    driver = new FirefoxDriver();
    driver.get("https://www.kayak.co.in/");
    driver.manage().window().maximize();
    driver.findElement(By.xpath("//a[@href='/flights']")).click();
    driver.findElement(By.xpath("//label[@title = 'One-way']")).click();  
    driver.findElement(By.xpath("//*[contains(@id='-submit')]")).click();
    driver.quit();

执行上面的代码后,获取以下异常:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: 
Unable to locate element: {"method":"xpath","selector":"//*[contains(@id='-
submit')]"}

此xpath有多个按钮。 您应该指定更多的xpath以获得唯一的按钮。 试试这个.//div[contains(@class,'Flights-Search-StyleJamFlightSearchForm')]/.//div[contains(@class,'centre')]/button[@title='Search']

在此处输入图片说明

您应该在调用元素以使其精确定位并使用moveToElement命令时声明一个WebElement,而不是简单地调用FindElement.By.xxxxx ex:

//*** Calling a WebElement and using moveToElement command***//

WebElement (anyElementname) = browser.findElement(By.partialLinkText("xxxxxxxxxxx"));
          action.moveToElement(anyElementname).perform();
//*** Waiting for 8 seconds***//          
Thread.sleep(8000, 80000);

您可以使用“等待”来提供页面加载时间以及元素之间的交互

我正在为您转换第一个xpath(flights)命令。 您可以用相同的方式进行其余操作:

WebElement flights = driver.findElement(By.xpath("//a[@href='/flights']")).click();
action.moveToElement(flights).perform();

不要忘记导入相关库,例如要执行操作,您必须导入:

import org.openqa.selenium.interactions.Actions;

让我知道它是否对您有用。 干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM