2016-07-10 12 views
0

Ich versuche ein Java-Programm für meinen Job zu schreiben, das sich in Paychex (über Chrome) anmeldet und Berichte für mich herunterlädt. Mein Code navigiert zu der Website, aber ich stecke an diesem Punkt fest. Ich verwende den Selenium Chrome-Webtreiber und kann die Element-ID für das Anmeldefeld nicht finden, obwohl ich den richtigen Namen eingegeben habe. Ich habe stundenlang versucht, das herauszufinden, ohne Erfolg. Ich habe versucht, das Element nach ID, Name, CSS und XPath zu finden. Nichts hat funktioniert! Im Folgenden finden Sie die Website-URL und meinen Code. Jede Hilfe beim Zugriff auf dieses Element wäre unbegründet. Danke!Selen Element ID nicht gefunden

WebDriver driver = new ChromeDriver(); 
driver.get("https://myapps.paychex.com/landing_remote/login.do?TYPE=33554433" 
     + "&REALMOID=06-fd3ba6b8-7a2f-1013-ba03-83af2ce30cb3&GUID=&SMAUTHREA" 
     + "SON=0&METHOD=GET&SMAGENTNAME=09PZJoiHr8jiAF1z4DL6SopY5OyRzoKSeZ4y" 
     + "IhpJe7nkRdeIwtlMrg0rd7X3FRDM&TARGET=-SM-https%3a%2f%2fmyapps%2epa" 
     + "ychex%2ecom%2f");  
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS) 
WebElement id = driver.findElement(By.id("USER")); 

HTML:

<input name="USER" class="form-control ng-pristine ng-invalid ng-invalid-required" id="USER" required="" type="text" maxlength="50" placeholder="Enter Username" data-ng-model="user.username" data-payx-form-value="siteminder.username" data-ng-change="clearShowError()" data-payx-focus=""> 
+1

wo ist Ihr HTML? –

+0

Sind Sie sicher, dass die HTML-Element-ID USER ist? Ich würde F12 in Chrom drücken, Sie das kleine Cursor-Symbol in den Entwicklertools und klicken Sie auf das Eingabefeld für Feld, und sehen Sie, was seine ID auch eingestellt ist. – Gavin

+0

Entschuldigung - ich tat das und hier ist es. JMarotta

Antwort

2

Sie haben tun die korrekte ID aber Ihr gewünschtes Element ist in einem IFRAME. Schalten Sie zuerst auf IFRAME und dann sollten Sie auf Ihr Element zugreifen können.

driver.get("https://myapps.paychex.com/"); 
driver.switchTo().frame("login"); 
WebDriverWait wait = new WebDriverWait(driver, 10); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("USER"))).sendKeys("MyUsername"); 
// do stuff but be sure to switch back to default content if you need to access elements outside the IFRAME 
driver.switchTo().defaultContent();