我试图找到位于在另一个窗口中打开的用于selenium的python脚本的窗口中的元素的xpath。
页面本质上是一个框架,其中承载了另一个页面(就像浏览器中的浏览器窗口)。
我可以找到外部浏览器窗口内的窗口本身的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
你必须将控件切换到iframe内部,然后尝试与web元素进行交互
iframe = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to_frame(iframe)
和从iframe返回到主窗口
driver.switch_to_default_content()
试试:
driver.switch_to.frame(driver.find_element_by_id('yourframeid'));
其中yourframeid
是框架或iframe的ID