Java 无法在iFrame(即Selenium)中定位/单击元素
单击iframe中的元素时出现问题。在此步骤之前,单击一个按钮后,将打开一个新窗口,然后切换到一个新窗口,然后尝试单击iframe中的元素,但是没有任何结果。在这里您可以看到代码:Java 无法在iFrame(即Selenium)中定位/单击元素,java,selenium,selenium-webdriver,iframe,automated-tests,Java,Selenium,Selenium Webdriver,Iframe,Automated Tests,单击iframe中的元素时出现问题。在此步骤之前,单击一个按钮后,将打开一个新窗口,然后切换到一个新窗口,然后尝试单击iframe中的元素,但是没有任何结果。在这里您可以看到代码: @Test public void test01() throws InterruptedException { LoginPageMethods loginPage = new LoginPageMethods(); HomePageMethods homePage = new HomePageMethods()
@Test
public void test01() throws InterruptedException {
LoginPageMethods loginPage = new LoginPageMethods();
HomePageMethods homePage = new HomePageMethods();
ShoppingCartMethods shoppingCart = new ShoppingCartMethods();
loginPage.loginToWebsite(Recordset.userName, Recordset.webPassword);
String parentWindow = driver.getWindowHandle();
System.out.println("The current window" + parentWindow);
homePage.goToShoppingCartPage();
//Return a set of window handle
ArrayList<String> windows = new ArrayList<>(driver.getWindowHandles());
System.out.println(windows);
driver.switchTo().window(windows.get(1));
System.out.println(windows.get(1));
//loginPage.loginToWebsite(Recordset.userName, Recordset.webPassword);
WebElement iframe = driver.findElement(By.xpath("//iframe[@id='contentAreaFrame']"));
driver.switchTo().frame(iframe);
List<WebElement> iframes = driver.findElements(By.tagName("iframe"));
int iframecount = iframes.size();
System.out.println("Number of iframes: " + iframecount);
shoppingCart.goToSetValuesOptions();
shoppingCart.setCompanyCode();
@测试
public void test01()引发InterruptedException{
LoginPageMethods loginPage=新的LoginPageMethods();
HomePageMethods homePage=新的HomePageMethods();
ShoppingCartMethods shoppingCart=新的ShoppingCartMethods();
loginPage.LoginToWeb(Recordset.userName,Recordset.webPassword);
字符串parentWindow=driver.getWindowHandle();
System.out.println(“当前窗口”+父窗口);
homePage.goToShoppingCartPage();
//返回一组窗口句柄
ArrayList windows=新的ArrayList(driver.getWindowHandles());
System.out.println(windows);
driver.switchTo().window(windows.get(1));
System.out.println(windows.get(1));
//loginPage.LoginToWeb(Recordset.userName,Recordset.webPassword);
WebElement iframe=driver.findElement(By.xpath(“//iframe[@id='contentAreaFrame']);
驱动程序.切换到().帧(iframe);
列出iframes=driver.findElements(按.tagName(“iframe”);
int iframecont=iframes.size();
System.out.println(“Iframe的数量:“+iframecount”);
shoppingCart.goToSetValuesOptions();
shoppingCart.setCompanyCode();
(我要单击“设置值”链接)
(已检查元件,可见-铬)
(最终,我需要在InternetExplorer中执行该操作,并通过MRI工具在这里签入,它不识别xpath,但在CHrome中识别)
以下是我在控制台中得到的信息:
当前窗口CDWindow-84EBD3BA474C418428AACFD82588EAF8
[CDwindow-84EBD3BA474C418428AACFD82588EAF8,
CDwindow-06F8C7313F9C0CF38B35BEA929AC2C0B]
CDwindow-06F8C7313F9C0CF38B35BEA929AC2C0B iFrame数:3
org.openqa.selenium.NoSuchElementException:30后超时
秒。无法找到元素
在切换到新窗口后,您需要再次切换到相应的iframe。我在打开新窗口后切换到iframe 1。您确定已成功切换到下一个窗口吗?2.iframe定位器是唯一的?3.在切换之前,驱动程序有足够的时间识别iframe?是的,窗口是正确的,因为我也这样做了检查(driver.getWindowHandle()并显示第二个正确的窗口)。此外,iframe有一个唯一的ID。我还有一个问题。这个iframe在另一个iframe中是什么?这是否意味着我需要从默认内容切换到第一个帧,然后从第一个帧切换到第二个帧?我同意Narendra的观点,你很可能会对自己正在管理的窗口感到困惑。s之后,你需要再次切换到各自的iframe切换到新窗口打开新窗口后,我正在切换到iframe 1。您确定已成功切换到下一个窗口吗?2.iframe定位器是唯一的?3.在切换之前,驱动程序有足够的时间识别iframe?是的,窗口是正确的,因为我也做了检查(driver.getWindowHandle()它显示了第二个窗口,这是正确的)。此外,iframe有一个唯一的ID。我还有一个问题。这个iframe在另一个iframe中是什么?这是否意味着我需要从默认内容转到第一个帧,然后再从第一个帧转到第二个帧?我同意Narendra的观点,你很可能对自己在管理窗口感到困惑。