我需要在某个数据库上运行数千次搜索,并且我正在使用 Python 和 Selenium WebDriver 来自动化它。问题是,包含搜索结果的框架有一个动态生成的名称。该名称始终以相同的方式开头(例如“results_frame”),然后是一堆每次都会更改的数字(例如“results_frame1298120910290”)。因此,基于几个小时的谷歌搜索,我尝试使用 xpath:
framename = driver.find_elements_by_xpath("//frame[contains(@name, 'results_frame')]")
driver.switch_to_frame(framename)
不好。当我打印'framename'时,我得到的是:
[<selenium.webdriver.remote.webelement.WebElement object at 0x101206350>, <selenium.webdriver.remote.webelement.WebElement object at 0x101206390>]
而不是框架的实际名称。
我也尝试过按照这里driver.switch_to_frame(0)
的建议使用索引(如,driver.switch_to_frame(1)
等),但也没有好处。
那么,当动态生成框架的名称时,如何检索该名称?有什么想法吗?
(Python 2.7.5、Selenium 2.2.0、Mac OS X 10.6.8、Firefox 22.0)