Необходимо проверить текст внутри таблицы (Python, Selenium) - PullRequest
1 голос
/ 26 июня 2019

Новый для автоматизации, у меня есть пара месяцев за поясом и учусь, когда у меня есть свободное время.

Я пытаюсь подтвердить, что имя пользователя появляется внутри таблицы, а имя появится в нескольких строках.

Я использую что-то вроде этого:

@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».Я буду называть "Майк" в файле возможностей ...

Общая идея интерфейса

Ответы [ 2 ]

1 голос
/ 26 июня 2019

У вас есть изменение опечатки ] на //:

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)
0 голосов
/ 26 июня 2019

Если я вас понял, вы не хотите проверять все имена в сетке и обнаруживать, не является ли какое-либо из этих имен «Майком». Вы можете использовать код ниже, чтобы выбрать все имена в сетке, а затем проверить, отличается ли какое-либо из них от ожидаемого

#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

Дайте мне знать, если это не сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...