【问题标题】:retrieve dynamic frame names w/ Selenium WebDriver and Python?使用 Selenium WebDriver 和 Python 检索动态框架名称?
【发布时间】: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


【解决方案1】:

find_elements_by_xpath 返回WebElement 类型的对象。您需要使用get_attributeWebElement 中检索属性的值。

framename = driver.find_element_by_xpath("//frame[contains(@name, 'results_frame')]").get_attribute("name")

这应该会返回您要查找的名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    相关资源
    最近更新 更多