2017-07-19 185 views
-2

使用一切完成。没有输出只显示一个错误。已尝试所有这些方法,但它只显示一个错误。完全失去了它。昨天没有任何进展。请考虑一下,请让我知道。滑块错误总是Selenium Webdriver

public class task { 

public static void main(String[] args) { 
    System.setProperty("webdriver.gecko.driver", "g://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(); 

    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]")); 
    //a.dragAndDrop(source, target).build().perform(); 

     WebElement slider = driver.findElement(By.xpath(".//* 
     [@id='DivDepart']/div/div/div[1]/div[2]")); 
     //WebElement slider = driver.findElement(By.id("DivDepart")); 
    Actions a = new Actions(driver); 


     //a.dragAndDropBy(slider, 30, 0).build().perform(); 


     //a.clickAndHold(slider).moveByOffset(30, 
     0).release(slider).build().perform(); 
      //System.out.println("moved"); 
        //JavascriptExecutor js = (JavascriptExecutor)driver; 
     org.openqa.selenium.interactions.Action dragAndDrop = 

      a.clickAndHold(slider).moveByOffset(40,0).release().build(); 

      dragAndDrop.perform(); 


      //js.executeScript("window.scrollBy(200,0)"); 

      } 

      } 
+0

你试图做什么?你遇到什么错误?在StackOverflow中转储代码通常没有帮助.. –

+0

在输入cheapOair.com后,我试图移动滑块,输入详细信息后使用xpath并单击搜索按钮,新页面显示。现在,我需要移动滑块。当试图移动它时,它不起作用。 –

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

只执行这段代码,我已执行此和做工精细,并符合市场预期。

我刚挑选你的代码并执行一次,现在修正后它工作得很好。你的滑块代码是完美的,不需要改变它。

问题是你没有写好的剧本选择日期[出发和到达]

你也可以试试这个代码移动滑块:

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] 

请让我知道,如果它是在你的最后工作。

+0

非常感谢您,正如您所提到的,我没有编写脚本来选择日期,并且出现了我的错误。现在我已经试过你的代码,它完美的工作。 –

+0

例如,如果飞行时间滑块在上午10点到下午10点20分之间,则会显示一些结果。显示的结果只是在上午10:01至10:20之间的时间。现在,我可以比较并证明在结果中显示的上午10:01时间大于上午10:00在滑块上。我无法在这里找到逻辑。使用清单和循环,但由于我只能得到的文字(使用gettext()) –

+0

Sry我没有得到你的问题,你在评论中提到,请更详细..所以我可以帮助你。 – Rohhit

0

用户点击“搜索”按钮后输入从/到&日期的详细信息。然后移动到下一个屏幕。从那里我相信你想移动滑块。然后尝试下面的代码,您可能需要根据应用程序需要更改等待时间。

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
    Robot rob = new Robot(); 
    rob.keyPress(KeyEvent.VK_PAGE_DOWN); 
    rob.keyRelease(KeyEvent.VK_PAGE_DOWN);