python - 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)
作为我的司机。
编辑:我应该澄清这不会创建一个新窗口。
解决方案
在没有看到页面的 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
推荐阅读
- python - Python:代码之前工作后DLL加载失败
- vb.net - 如何在 VB 应用程序中访问 IE 对象的 ReadyState?
- amazon-web-services - 如何降低 AWS 网站托管(EC2、RDS)的成本
- c++ - 正在使用 ::New() 在堆或堆栈上分配我的智能指针吗?
- java - 是否可以使用 Comparator.comparingInt 链按两个字段以相反的自然顺序对对象进行排序
- python - 致命的 Python 错误:无法获取 <_io.BufferedWriter name=' 的锁
'> 在解释器关闭时,可能是由于守护线程 - reactjs - 状态中的计数器增量未更新
- python - Python:删除重复项之间的列表中的部分
- java - Spring Data MongoDB GroupOperation 转换为 ObjectID
- git - Git认为分支不是相同的