我是自动化的新手,有几个月的时间在学习,有空的时候就去学习。
我试图确认用户名是否出现在表内,并且该用户名将出现在多行中。
我正在使用类似这样的东西:
@step('Users homepage my lists created by is only user "{username}"')
def step_impl(context, username):
users_name = context.browser.find_elements_by_xpath(
"//*[@id='apollo-table_wrapper']][contains(text(),'%s')]" % username)
我知道该表的xpath正确,但是如果我想验证屏幕上仅可见特定的用户名,我就会遇到问题。
在下面的这张图中,我想进行一个测试,以确保页面上仅存在“ mike”的用户。我会在功能文件中喊出“麦克” ...
答案 0 :(得分:1)
您将]
更改为//
:
users_name = context.browser.find_elements_by_xpath(
"//*[@id='apollo-table_wrapper']//[contains(text(),'%s')]" % username)
要遍历您可以执行以下操作:
users_names = context.browser.find_elements_by_xpath("//*[@id='apollo-table_wrapper']")
print([i.text for i in users_names if i.text == "Mike"])
# Or you can append to list:
res = []
[res.append(i.text) for i in users_names if i.text == "Mike"]
print(res)
答案 1 :(得分:0)
如果我理解您的意思,您将不会验证网格中的所有名称,并检测其中的任何一个名称是否不是“ Mike”。您可以使用下面的代码从网格中选择所有名称,然后验证它们是否与预期的不同
#This will only work if the Xpath bellow selects only the names, if it
#selects other fields from the table it will verify if all the fields are
#"Mike", instead of only the Name fields.
users_name = context.browser.find_elements_by_xpath("//*[@id='apollo-table_wrapper']")
result = true
expectedValue = "Mike"
for x in users_name:
if x.text != expectedValue
result = false
break
#Assert result here
让我知道这是否行不通。