我正在尝试为我的工作编写一个Java程序,该程序登录到Paychex(通过Chrome)并为我下载报告。我的代码导航到网站,但我仍然坚持到那一点。我正在使用Selenium Chrome网络驱动程序,我无法找到登录字段的元素ID,尽管我输入了正确的名称。我花了好几个小时试图弄明白这一点无济于事。我试过通过id,name,css和xpath找到元素。什么都没有奏效!以下是网站网址和我的代码。访问此元素的任何帮助都将无法理解。 谢谢!
parameter
HTML:
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"));
答案 0 :(得分:2)
您拥有正确的ID,但您所需的元素位于IFRAME
。首先切换到IFRAME
然后您应该能够访问您的元素。
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();