2

在此处输入图像描述嗨,我有基于 extJS 的用户界面。我面临重叠页面的问题。例如:我有一个带有按钮的页面,该按钮将打开一个面板类型的东西(注意:它不是单独的框架也不是单独的窗口。它在与父页面 DOM 相同的 DOM 中打开)。该面板与基础页面重叠。该面板的样式属性中有一个 z-index。现在我希望识别此面板上的控件。我怎么能在 selenium webdriver 中做到这一点。此外,面板和底层页面可能具有相同的控件(但底层控件未激活)。那么我们如何识别这些控件呢?TIA。嗨,我想添加 UI 的屏幕截图,但我无法添加,因为它说我需要至少 10 个声望才能发布图像。我怎样才能获得10个声望?还有一些控件出现在两个页面上。e 重叠页面和重叠页面。由于它是一个基于 extJS 的 UI,ID 会自动生成,CSSLocator 将识别出现在 UI 上并且相似的两个控件。所以我想我只剩下一个选择,即以某种方式跳入面板然后识别控件。我尝试使用 driver.switchTo.activeElement 假设底层控件处于非活动状态,但它仍然没有帮助我。在这方面的任何帮助。TIA 在这方面的任何帮助。TIA 在这方面的任何帮助。TIA

附上截图。现在正如您所看到的,我将突出显示的面板与基础页面重叠,并且它也存在于重叠页面的 DOM 中。一些建议:1)我尝试使用 XPath,但这无济于事,因为我必须为 UI 中的每个此类控件硬编码 xpath(我正在尝试动态生成 xpath,但它仍在进行中。) 2)无论如何我们可以告诉驱动程序选择具有焦点且处于活动状态的控件。DOM 源太大而无法粘贴。有问题的控件是屏幕截图中显示的“开始查询”按钮,该按钮出现两次,并且可以在页面中出现多次。我正在研究您建议的解决方案。

4

1 回答 1

0

由于屏幕截图中只显示了几行 DOM,所以我只能猜测你有。

我假设你有类似这样的 DOM:

<button id='ext-gen343'>Start query</button>
<div id="ext-gen1829" class=" x-window" style="width: 30px; height: 85px; margin: 0px; left: 0px; top: 0px; visibility: visible; display: block;">
    <button id='ext-gen1920'>Start query</button>
</div>

首先找到窗口,然后使用 cssSelector 或 Xpath 找到里面的按钮。

// Note that I used 'display: block;' to ensure we are looking for the active/visible window.
WebElement btnStartQueryInside = driver.findElement(By.XPath("//div[contains(@class, 'x-window') and contains(@style, 'display: block;')]//button[text()='Start query']"));

对于您的第 2 点,driver.switchTo.activeElement是您想要的,您之前已经提到过。但这不是一个优雅的解决方案,甚至根本不起作用。

于 2013-04-22T21:21:57.860 回答