使用所做的一切。没有输出只显示错误。尝试了所有这些方法,但它只显示错误。完全失去了它。昨天没有任何进展。请仔细研究,请告诉我。
{{1}}
答案 0 :(得分:1)
注意: -
在您的代码中,我可以清楚地看到,您没有选择离开日期和到达日期,而是直接点击"立即搜索"按钮。如果您直接单击搜索按钮而未选择出发和到达日期,则会出现验证消息。因此webdriver无法找到您感兴趣的滑块。您为滑块编写的代码工作正常。不要改变它。
public class task {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver", "D:/geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.cheapoair.com/");
driver.manage().deleteAllCookies();
driver.findElement(By.xpath(".//*[@id='ember746']")).sendKeys("DFW");
driver.findElement(By.xpath(".//*[@id='ember751']")).sendKeys("JFK");
driver.findElement(By.xpath(".//*[@id='owFlight']")).click();
driver.findElement(By.xpath(".//*[@id='departCalendar_0']")).click();
driver.findElement(By.xpath(".//*[@id='calendarCompId']/section/div/div[1]/ol/div[26]/li")).click();
driver.findElement(By.xpath(".//*[@id='ember751']")).sendKeys("JFK");
driver.findElement(By.xpath(".//*[@id='owFlight']")).click();
//------- Corrections
driver.findElement(By.xpath("//*[@id='departCalendar_0']")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id='calendarCompId']/section/div/div[1]/ol/div[27]/li")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id='calendarCompId']/section/div/div[1]/ol/div[31]/li")).click();
// Corrections--------
driver.findElement(By.xpath(".//*[@id='ember730']/section/form/input")).click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
WebElement target = driver.findElement(By.xpath(".//*[@id='DivDepart']/div/div/div[1]/div[2]"));
WebElement source = driver.findElement(By.xpath(".//*[@id='DivDepart']/div/div/div[1]/div[1]"));
WebElement slider = driver.findElement(By.xpath(".//*[@id='DivDepart']/div/div/div[1]/div[2]"));
((JavascriptExecutor) driver).executeScript("scrollBy(0,500);");
Actions a = new Actions(driver);
org.openqa.selenium.interactions.Action dragAndDrop =
a.clickAndHold(slider).moveByOffset(40,0).release().build();
dragAndDrop.perform();
} }
只需执行此代码,我已执行此操作并正常工作并按预期工作。
我刚刚选择了你的代码并执行了一次,经过修正后现在工作得非常好。您的滑块代码非常完美,无需更改。
问题是你没有编写选择日期的脚本[出发和到达]
您也可以尝试使用此代码移动Slider:
Thread.sleep(5000);
Actions builder1 = new Actions(driver);
WebElement zero = driver.findElement(By.xpath(".//*[@id='DivDepart']/div/div/div[1]/div[2]"));
builder1.dragAndDropBy(zero, 1000, 0).perform();
xpath of slider square :- //*[@id='slider-range']/span[1]
如果它在您的最后工作,请告诉我。
答案 1 :(得分:0)
进入From / To&用户点击'搜索'按钮。然后移动到下一个屏幕。从那里我相信你想移动滑块。然后尝试下面的代码,你可能必须根据应用程序的需要改变等待。
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Robot rob = new Robot();
rob.keyPress(KeyEvent.VK_PAGE_DOWN);
rob.keyRelease(KeyEvent.VK_PAGE_DOWN);