使用Selenium WebDriver和Python检索动态帧名称?

Par*_*val 2 python selenium python-2.7 selenium-webdriver

我需要在某个数据库上运行数千次搜索,而我正在使用Python和Selenium WebDriver来自动化它.问题是,包含搜索结果的框架具有动态生成的名称.该名称始终以相同的方式开始(例如,"results_frame"),然后是一堆每次都在变化的数字(如"results_frame1298120910290").所以,基于几个小时的谷歌搜索,我尝试使用xpath:

framename = driver.find_elements_by_xpath("//frame[contains(@name, 'results_frame')]")
driver.switch_to_frame(framename)
Run Code Online (Sandbox Code Playgroud)

不好.当我打印'framename'时,我得到的是:

[<selenium.webdriver.remote.webelement.WebElement object at 0x101206350>,    <selenium.webdriver.remote.webelement.WebElement object at 0x101206390>]
Run Code Online (Sandbox Code Playgroud)

而不是框架的实际名称.

我已经使用索引(如也试过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)

Ric*_*ard 7

find_elements_by_xpath返回一个类型的对象WebElement.您需要使用get_attribute从中检索属性的值WebElement.

framename = driver.find_element_by_xpath("//frame[contains(@name, 'results_frame')]").get_attribute("name")
Run Code Online (Sandbox Code Playgroud)

这应该返回您正在寻找的名称.