2017-07-19 63 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);