如何使用Selenium Webdriver和Python处理弹出窗口
这是一个情况 - 在我测试的网站上,页面的源代码是动态变化的。也就是说,当我把鼠标移动到某个元素上时,会出现一个弹出框,里面有DOM结构和所有内容。我想要抓取这个弹出框里的DOM元素。
我正在使用Python的webdriver。使用IDLE的时候效果很好,因为弹出框会在网页上停留一段时间,我可以抓取到DOM结构。但是,当我尝试在脚本中执行时,弹出框只是闪了一下,我无法抓取到DOM结构。
我尝试过使用WebDriverWait、Actions API等等,但都没有效果。任何建议都会很感激。谢谢。
1 个回答
0
使用动作来让鼠标悬停在某个元素上。最简单的方法大概是这样的(抱歉,代码是用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
。通常这样做可以让像鼠标悬停弹出窗口这样的东西一直保持打开状态。