【发布时间】:2013-07-30 18:28:22
【问题描述】:
我需要在某个数据库上运行数千次搜索,并且我正在使用 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) 等),正如here 所建议的那样,但也不好。
那么,当框架的名称是动态生成的时,如何检索该名称?有什么想法吗?
(Python 2.7.5、Selenium 2.2.0、Mac OS X 10.6.8、Firefox 22.0)
【问题讨论】:
-
我希望理查德这么快就回答了你。每当使用 .// 而不是 // 进行 xpath 练习时
标签: python python-2.7 selenium selenium-webdriver