需要验证 table (Python, Selenium) 中的文本

Need to verify text inside a table (Python, Selenium)

自动化的新手,我有几个月的时间并在空闲时间学习。

我正在尝试确认用户名出现在 table 中并且该名称将出现在多行中。

我正在使用这样的东西:

@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)

我知道 table 的 xpath 是正确的,但如果我想验证屏幕上是否只有特定的用户名可见,我 运行 遇到了问题。

在下图中,我想进行测试以确保只有 "mike" 的用户出现在页面上。我会在功能文件中调用"mike"...

General idea of the UI

你有一个拼写错误 ] 更改为 //:

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)

如果我理解你的话,你不想验证网格中的所有名称,并检测是否有任何这些名称不是 "Mike"。您可以使用下面的代码 select 网格中的所有名称,然后验证它们是否与预期的不同

#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

如果这不起作用,请告诉我。