滑块错误总是Selenium Webdriver

时间:2017-07-19 21:26:51

标签: java selenium selenium-webdriver

使用所做的一切。没有输出只显示错误。尝试了所有这些方法,但它只显示错误。完全失去了它。昨天没有任何进展。请仔细研究,请告诉我。

{{1}}

2 个答案:

答案 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);