Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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/selenium—如何单击主页顶部弹出的表单中的元素?_Java_Selenium_Xpath - Fatal编程技术网

java/selenium—如何单击主页顶部弹出的表单中的元素?

java/selenium—如何单击主页顶部弹出的表单中的元素?,java,selenium,xpath,Java,Selenium,Xpath,在我的自动化项目中的某一点上,我必须在成功访问页面并单击显示表单的元素后,单击作为表单一部分的元素,该元素会在主页顶部弹出(它不会像那些在某个元素上悬停时显示然后消失的菜单那样消失) 我一直在尝试其他问题的评论中建议的各种解决方案,比如使用偏移量和等待元素变得可点击,但没有一种对我有效 以下是第一个字段“Name”的当前状态代码: 编辑-工作代码(谢谢segalaj): try { System.out.println("Filling in mandatory

在我的自动化项目中的某一点上,我必须在成功访问页面并单击显示表单的元素后,单击作为表单一部分的元素,该元素会在主页顶部弹出(它不会像那些在某个元素上悬停时显示然后消失的菜单那样消失)

我一直在尝试其他问题的评论中建议的各种解决方案,比如使用偏移量和等待元素变得可点击,但没有一种对我有效

以下是第一个字段“Name”的当前状态代码:

编辑-工作代码(谢谢segalaj):

try {
                System.out.println("Filling in mandatory fields of the contact form... ");
                wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//iframe[@id='jcemediabox-popup-iframe']")));
                driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@id='jcemediabox-popup-iframe']")));

                driver.wait(pauseInSeconds);

                System.out.println("Filling in name... ");
                wait.until(ExpectedConditions.elementToBeClickable(By.name("form[Name]")));
                driver.findElement(By.name("form[Name]")).sendKeys(contactInput[0]);
                System.out.println("Filled in name");

                driver.wait(shorterWait);               

                driver.switchTo().defaultContent();             

            } catch (Exception e) {
                System.out.println("Could not complete actions on: contact form");
                e.printStackTrace();
            }

由于弹出窗口位于iframe中,您需要告诉webdriver切换到iframe:

<webdriver>.switchTo().frame(<iframe-webelement>);
.switchTo().frame();
然后您将能够访问iframe元素。
完成框架后,不要忘记返回主页面

你可以找到医生


希望有帮助。

弹出窗口是在iframe中吗?据我所知,是的。
<webdriver>.switchTo().frame(<iframe-webelement>);