2017-05-17 2 views
0

Die book now Schaltfläche auf Irctc ist nicht anklickbar. Der angezeigte Fehler ist nicht interaktiv. Ich versuchte mitKlicken Sie auf Schaltfläche, die auf IRCTC nicht sichtbar ist, mit Selenium

wait.until(ExpectedConditions.elementToBeClickable(By.xpath(""))); 

Aber immer noch kein Gewinn.

FirefoxOptions options = new FirefoxOptions(); 
options.setBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); //This is the location where you have installed Firefox on your machine 

WebDriver driver = new FirefoxDriver(options); 

WebDriverWait wait = new WebDriverWait(driver, 10); 

driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS); 

driver.get("http://www.irctc.co.in");//It will open the website 

driver.manage().window().maximize();//It will maximize the window 

Thread.sleep(5000);//For Entering the Captcha before 5sec 

driver.findElement(By.xpath("//input[@id='usernameId']")).sendKeys("");//enter username 

driver.findElement(By.xpath("//input[@class='loginPassword']")).sendKeys("");//enter password 

driver.findElement(By.xpath("//input[@id='loginbutton']")).click();//clicks on sign in 

Thread.sleep(2000); 

driver.findElement(By.xpath("//input[@id='jpform:fromStation']")).sendKeys("H NIZAMUDDIN - NZM");//origin station 


driver.findElement(By.xpath("//input[@id='jpform:toStation']")).sendKeys("KOTA JN - KOTA");//destination station 


driver.findElement(By.xpath("//input[@id='jpform:journeyDateInputDate']")).sendKeys("18-05-2017");//Date Of Journey 

Thread.sleep(2000); 

driver.findElement(By.xpath("//input[@id='jpform:jpsubmit']")).click();//Clicks to find the trains 

Thread.sleep(2000); 

driver.findElement(By.xpath("//a[@id='cllink-13237-CC-1']")).click();//Clicks the class of train to find available seats 

Thread.sleep(5000); 

driver.findElement(By.xpath("//a[@id='13237-3A-GN-0']")).click();//For clicking on Book Now, but is not functioning. 
+0

Kein Element mit ID 'cllink-13237-CC-1' existiert auf der Seite. Welchen Zug wolltest du auswählen? –

+0

Die Zugnummer, die ich im Code erwähnt habe, ist falsch. Ansonsten wurde diese Codezeile im Firefox Browser erfolgreich ausgeführt. –

Antwort

0

Hinweis:ich nicht die Automatisierung von IRCTC bin ermutigend. Dies dient nur dazu, das OP in die richtige Richtung zu lenken. Benutzung auf eigene Gefahr.

Ich benutze ChromeDriver, Sie können einen beliebigen Treiber verwenden, aber stellen Sie sicher, es unterstützt Javascript. Hier ist der Code

import org.openqa.selenium.By; 
import org.openqa.selenium.JavascriptExecutor; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.chrome.ChromeOptions; 
import org.openqa.selenium.remote.DesiredCapabilities; 

class Main{ 
    public static void main(String args[])throws InterruptedException{ 
     System.setProperty("webdriver.chrome.driver", "C:\\Users\\Shash\\Desktop\\chromedriver.exe"); 
     ChromeOptions options = new ChromeOptions(); 
     options.addArguments("window-size=1024,768"); 

     DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
     capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
     WebDriver driver = new ChromeDriver(capabilities); 

     driver.get("http://www.irctc.co.in");//It will open the website 
     Thread.sleep(5000);//For Entering the Captcha before 5sec 

     driver.findElement(By.xpath("//input[@id='usernameId']")).sendKeys("");//enter username 

     driver.findElement(By.xpath("//input[@class='loginPassword']")).sendKeys("");//enter password 

     driver.findElement(By.xpath("//input[@id='loginbutton']")).click();//clicks on sign in 

     Thread.sleep(2000); 

     driver.findElement(By.xpath("//input[@id='jpform:fromStation']")).sendKeys("H NIZAMUDDIN - NZM");//origin station 


     driver.findElement(By.xpath("//input[@id='jpform:toStation']")).sendKeys("KOTA JN - KOTA");//destination station 


     driver.findElement(By.xpath("//input[@id='jpform:journeyDateInputDate']")).sendKeys("18-05-2017");//Date Of Journey 

     driver.findElement(By.xpath("//input[@id='jpform:jpsubmit']")).click();//Clicks to find the trains 
     driver.findElement(By.xpath("//a[@id='cllink-12060-CC-0']")).click();//Clicks the class of train to find available seats 
     Thread.sleep(3000); 
     if (driver instanceof JavascriptExecutor) { 
      ((JavascriptExecutor) driver) 
       .executeScript("document.getElementById(\"12060-CC-GN-0\").click()"); 
     } 
    } 
} 

Ihr Code hatte mehrere Probleme. Zuerst war ein Element mit der ID cllink-13237-CC-1 nicht vorhanden. Stellen Sie sicher, dass Sie die genaue ID des Elements erhalten. Da IRCTC das Klicken mit der rechten Maustaste nicht zulässt, können Sie Ctrl + Shift + I verwenden, um die Quelle anzuzeigen.

Zweitens wurde das Book Now Element ausgeblendet, daher habe ich Javascript verwendet, um darauf zu klicken.

+0

Danke für die Lösung, es funktioniert jetzt gut. Können Sie mir vorschlagen, wo ich warten soll und wo ich es vermeiden sollte? –

+0

@SushantKumar können Sie alle 'Thread.sleep' entfernen. Behalte es für das Captcha und vor dem JavaScript Executor. Möglicherweise müssen Sie erneut experimentieren, da ich mit IRCTC nicht vertraut bin. –

Verwandte Themen