gpt4 book ai didi

java - 多个模式对话框,无法选择最上面的一个

转载 作者:行者123 更新时间:2023-11-30 06:53:22 26 4
gpt4 key购买 nike

我正在运行测试,但在管理模式对话框时遇到了意外问题。

用户在模式对话框中上传文件,如果系统上已存在该文件,则会打开另一个单独的模式对话框,询问用户是否要覆盖现有文件。

我在操作第二个对话框上的按钮时遇到困难。

当我管理第一个对话框时,我执行以下操作,该操作有效:

void switch_to_dialog_window(WebDriver driver){

driver.switchTo().frame(driver.findElement(By.cssSelector("div.d2l-dialog>div>iframe")));

}

两个对话框打开时的 html 如下所示:

<div class="d2l-dialog" style="top: 70px; width: 700px; height: 520px; left: 630px; z-index: 1002;">
<div class="d2l-dialog-inner" style="height: 518px;">
<iframe class="d2l-dialog-frame" src="/d2l/common/dialogs/file/main.d2l?ou=11346&af=MyComputer%2cOuFiles%2cSharedFiles%2cgooglefiledownloader%2coffice365filedownloader&am=1&fsc=1&asc=0&mfs=0&afid=0&uih=&area=MyComputer&f=&path=%2fcontent%2fenforced%2f11346-Gherkin_Cucumber%2f&d2l_body_type=2" name="d2l_c_10_968" allowfullscreen="" scrolling="no" style="width: 698px; height: 518px; overflow: hidden;" frameborder="0"/>
</div>
</div>

<div class="d2l-dialog" style="top: 90px; width: 475px; height: 415px; left: 800px; z-index: 1004; display: block;">
<div class="d2l-dialog-inner" style="height: 413px;">
<iframe class="d2l-dialog-frame" src="/d2l/lp/fileinput/11346/Duplicates?files=photo.jpg" name="d2l_c_1_182" allowfullscreen="" scrolling="no" style="width: 473px; height: 413px; overflow: hidden;" frameborder="0"/>
</div>
</div>

我正在尝试控制提到重复项的对话框。

我尝试将 switch_to_dialog_window 的方法修改为更具体(作为识别第一个对话框来控制它的测试):

 driver.switchTo().frame(driver.findElement(By.cssSelector("div.d2l-dialog>div>iframe[src^='/d2l/common/dialogs/file/main.d2l']")));

但这不起作用,所以我无法实现这种方式来管理两个对话框。

我尝试切换到默认内容,然后使用“switch_to_dialog_window”方法切换回对话框,但这也不起作用。我尝试直接访问对话框上的按钮,但这不起作用:

public void confirm_duplicate() {



//driver.findElement(By.xpath("//iframe[starts-with(@src, '/d2l/lp/fileinput/11346/Duplicates')]"));

//driver.switchTo().frame(driver.findElement(By.cssSelector("div>div>iframe[src^='/d2l/lp/fileinput/11346/Duplicates']")));
try{
//driver.switchTo().frame(driver.findElement(By.cssSelector("div>div>iframe[name^='d2l_c_1_']")));
driver.findElement(By.linkText("Update")).click();
}catch(Exception e)
{
System.out.println("could not click on the Update button on the top most dialog box");
e.printStackTrace();
}

}

我似乎在绕着这个转圈,而且很累。有人可以解释如何控制这个最上面的对话框吗?

您也可以教我为什么以下表达式不起作用:

driver.switchTo().frame(driver.findElement(By.cssSelector("div.d2l-dialog>div>iframe[src^='/d2l/common/dialogs/file/main.d2l']")));

最佳答案

如果切换到框架出现问题,可以使用机器人 API 来获取最顶层模态框的句柄。

要使用机器人 API,请提供以下代码行

Robot key = new Robot();
key.keyPress(KeyEvent.VK_ENTER);
key.keyRelease(KeyEvent.VK_ENTER);

确保控件已位于预期按钮上。如果焦点位于模式上的另一个按钮上,则提供“tab”或其他键事件以获取更新按钮上的控件。

关于java - 多个模式对话框,无法选择最上面的一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42289881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com