我试图通过断言头部的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。
答案 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'))