如何在另一个“框架窗口”内的窗口中查找元素的xpath

时间:2013-06-12 21:14:11

标签: python xpath selenium

我试图找到一个位于窗口中的元素的xpath,该窗口在另一个窗口中打开,用于硒的python脚本。

该页面本质上是一个框架,内置另一个页面(想想浏览器窗口中的浏览器)。

我可以在外部浏览器窗口中找到窗口本身的xpath,但我似乎无法使用xpath选择内部窗口中的任何元素。

这是选择我想要的元素的整体xpath。

/html/body/div/div[2]/table/tbody/tr/td[2]/form/div/div/div/div/div/table[2]/tbody/tr/td/div/div/div/div/div[2]/div/span/iframe/html/body/table/tbody/tr/td/div[3]/div[2]/div[2]/table/tbody/tr/td[2]/div/a[1]

选择内部窗口的xpath是:

/html/body/div/div[2]/table/tbody/tr/td[2]/form/div/div/div/div/div/table[2]/tbody/tr/td/div/div/div/div/div[2]/div/span/iframe

选择内部窗口内项目的xpath(如果直接在内部窗口页面上)是:

/html/body/table/tbody/tr/td/div[3]/div[2]/div[2]/table/tbody/tr/td[2]/div/a[1]

我尝试过使用所有这些方法,但我们无法在内页上选择元素。

这是Python代码:

    survivorFrame = driver.find_elements_by_xpath(".//*[@id='theSurvivorIframe']")[0]
    driver.switch_to_frame(survivorFrame)
    elem1 = driver.find_elements_by_xpath(".//*[@id='lea1_ileinner']/a[1]")
    survivorOwner = re.search('>(.*)<', elem1)
    print elem1
    print survivorOwner

2 个答案:

答案 0 :(得分:5)

您必须将控件切换到iframe内部,然后尝试与webelement进行交互

iframe = driver.find_elements_by_tag_name('iframe')[0] 
driver.switch_to_frame(iframe)

并从iframe返回主窗口

driver.switch_to_default_content()

答案 1 :(得分:0)

尝试使用:

driver.switch_to.frame(driver.find_element_by_id('yourframeid'));

其中yourframeid是您的框架或iframe的ID