【问题标题】:How to handle popovers using Selenium Webdriver + Python如何使用 Selenium Webdriver + Python 处理弹出框
【发布时间】:2011-11-13 15:31:36
【问题描述】:
情况是这样的——
在我正在测试的网站上,页面源是动态变化的,即当我将鼠标移到一个元素上时,我会看到一个弹出框,它具有 DOM 结构和所有内容。我想捕获弹出框中的 DOM 元素。
我正在使用带有 python 的 webdriver。当我使用 IDLE 时效果很好,因为弹出框会在网页上停留一段时间,我可以捕获 DOM 结构。但是,当我尝试在脚本中执行该操作时,弹出框仅在屏幕上闪烁,我无法捕获 DOM 结构。
我尝试过使用 WebDriverWait、Actions API 等。但没有任何效果。任何指针将不胜感激。谢谢。
【问题讨论】:
标签:
python
selenium
webdriver
browser-automation
【解决方案1】:
使用操作将鼠标悬停在元素上。直截了当的方法是这样的(对不起,代码在 C# 中):
IWebElement element = driver.FindElement(By.Id("something"));
Actions action = new Actions(driver);
actions.MoveToElement(element);
actions.Perform();
//get the DOM structure
重要的是不要忘记Perform() 调用。如果这不起作用(有时只是不起作用),将MoveToElement 替换为ClickAndHold。通常这会使鼠标悬停弹出窗口等内容无限期打开。