Использование glob в расширении Selenium для PHPUnit для идентификации элементов - PullRequest
4 голосов
/ 24 августа 2011

Я пишу тестовый пример Selenium в PHPUnit, используя расширение Selenium. В тесте я утверждаю, что на странице присутствует определенная ссылка.

Например, скажем, я хочу утверждать, что на странице существует следующая ссылка:

<a href="http://www.stackoverflow.com">click here to enter stackoverflow</a>

Чтобы подтвердить, что ссылка есть, мне нужно ее идентифицировать. Обычно мы идентифицируем ссылки, используя их якорный текст: assertElementPresent("link=click here to enter stackoverflow").

Я не хочу идентифицировать ссылку, используя весь текст привязки, а просто подстроку «stackoverflow», которая содержит текст привязки. Я могу использовать glob и звездный оператор, чтобы сделать это: assertElementPresent("link=glob:*stackoverflow*")

Это прекрасно работает в IDE Селена, но при кодировании эквивалента в PHPUnit утверждение не выполняется. Вот эквивалентная строка кода в PHPUnit:

$this->assertTrue(isElementPresent("link=glob:*stackoverflow*"));

Приведенное выше утверждение не выполняется, поскольку элемент link=glob:*stackoverflow* не идентифицирован. Элемент должен быть идентифицирован, так как на странице существует ссылка, в тексте привязки которой содержится строка «stackoverflow».

Мой вопрос более общий, чем простой пример, который я привел: Как я могу использовать glob для идентификации элементов в расширении Selenium для PHPUnit?

1 Ответ

2 голосов
/ 25 августа 2011

Мы используем выражения XPath во всех наших тестовых случаях Selenium, но я не участвовал в их написании и не исследовал другие варианты. Если вы не можете найти способ заставить glob работать, вы всегда можете прибегнуть к этому:

self::assertTrue($this->isElementPresent("//a[contains(.,'stackoverflow')]"));
...