Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在iFrame(即Selenium)中定位/单击元素_Java_Selenium_Selenium Webdriver_Iframe_Automated Tests - Fatal编程技术网

Java 无法在iFrame(即Selenium)中定位/单击元素

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()

单击iframe中的元素时出现问题。在此步骤之前,单击一个按钮后,将打开一个新窗口,然后切换到一个新窗口,然后尝试单击iframe中的元素,但是没有任何结果。在这里您可以看到代码:

@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的观点,你很可能对自己在管理窗口感到困惑。