首页 > 解决方案 > Selenium 无法与弹出的非新窗口菜单交互

问题描述

我已经尝试了一切。我已经束手无策了。我正在使用 Selenium 进行 2 次单击,1 次单击菜单,该菜单使用弹出窗口填充页面,但每次单击它时,它都会分阶段抛出图层并单击其后面的图层

ac.move_to_element(source).move_by_offset(731, 528).click().perform()

是我现在使用的命令。它单击静态图像并向下移动到我需要它的位置。

我使用了一堆不同的命令,并用每种方法完成了它,当我使用元素时(这些元素是从服务器提供的,并生成因此它不一致,这是让它始终如一地工作的唯一方法) 它只会关闭菜单。

我知道它会点击它后面的图层,因为如果它是正确的图层,则会出现一些突出显示的文本,说明点击的位置

options = FirefoxOptions()
profile = webdriver.FirefoxProfile("/home/retkid/.mozilla/firefox/ipb9voff.default")
options.add_argument("--headless")
driver = webdriver.Firefox(firefox_profile=profile,options=options)

作为我的司机。

编辑:我应该澄清这不会创建一个新窗口。

标签: pythonselenium

解决方案


在没有看到页面的 HTML的情况下,您可能需要切换窗口句柄才能进入弹出窗口的上下文。查看弹出窗口打开时是否添加了更多窗口句柄。例如,看看这个例子以获得灵感。

我的建议是在打开弹出窗口之前和之后开始输出driver.window_handles,以查看弹出窗口是否添加了任何其他窗口上下文。这样您就可以查看是否需要切换手柄,然后继续阅读指南的其他部分。

如果您从 1 个句柄开始,并在弹出窗口出现时以 2 个句柄结束,则下面的代码可能会切换到弹出句柄。

# storing the current window handle to get back to dashbord 
main_page = driver.current_window_handle

# changing the handles to access popup 
for handle in driver.window_handles: 
    if handle != main_page: 
        popup = handle

推荐阅读