Selenium Python-切换到框架后在框架外查找标题/标题

时间:2018-07-22 11:09:21

标签: python selenium iframe

我试图通过断言头部的title等于'Sales and Offering Space'来检查是否打开了正确的网页。 此head / title在iframe元素中,不可见。

切换到iframe后,Selenium在iframe(title)中找不到需要的'Sales and Offering Space'。相反,它在框架(title)之外找到主页'E-banking',而我的断言失败。

我尝试通过xpath(abs,rel,indexed)和标记名来定位正确的title,所有这些总是只找到主标题。 有人可以帮忙吗?

导航到测试页面后,我得到以下代码:

context.driver.switch_to_frame('bzeMainIframe')
title = WebDriverWait(context.driver, 5).until(expected_conditions.presence_of_element_located((By.TAG_NAME, 'title')))
assert title.text == 'Sales and Offering Space', "Page title is '%s' instead of 'Sales and Offering Space'" % (context.driver.title)

结果:

  

断言失败:页面标题为“电子银行”,而不是“销售和   提供空间”

在下一步中,我进行了类似的检查,切换到iframe并检查了正文中元素的值,并且此断言成功了。因此,我认为上述代码的问题可能与所需元素位于头部这一事实有关。

正在测试的应用程序:

https://ebanking-demo-ch2.ubs.com/auth/login1 -单击“登录”,然后等待几秒钟的重定向,然后单击顶部菜单上的“产品”。

该项目使用Behave,还有很多代码无法在此处复制,但是如果需要,我会将所有内容都推送到github。

1 个答案:

答案 0 :(得分:1)

如果title隐藏,则title.text将返回空字符串。另外context.driver.title总是返回首页的标题。所以

  • title.text == ""
  • context.driver.title == "E-Banking"
  • title.get_attribute('textContent') == "Sales and Offering Space"

您可以尝试如下修改代码:

context.driver.switch_to_frame('bzeMainIframe')
title = WebDriverWait(context.driver, 5).until(expected_conditions.presence_of_element_located((By.TAG_NAME, 'title')))
assert title.get_attribute('textContent') == 'Sales and Offering Space', "Page title is '%s' instead of 'Sales and Offering Space'" % (title.get_attribute('textContent'))