У меня проблемы с запуском и функцией xpath в Internet Explorer 10. Он отлично работает с Firefox и даже Chrome, но с IE не работает. Мне нужно найти следующее сообщение об ошибке:

We cannot find this car, please click on "I don't know my car reg" above

Проблема с этим сообщением заключается в двойных кавычках и кавычках в кавычках.

Невозможно использовать:

//span[@id='id']//*[text()='We cannot find this car, please click on "I don't know my car reg" above']

Или

//span[@id='id']//*[text()="We cannot find this car, please click on "I don't know my car reg" above"]

Итак, я попробовал это:

//span[@id='id']//*[text()=concat('We cannot find this car, please click on "I don',"'",'t know my car reg" above')]'

Функция concat отлично работает в chrome и fiferox, но в IE я получил следующее исключение:

org.openqa.selenium.InvalidSelectorException: The xpath expression '//span[@id='quoteForm:registrationLookupPart:m1']//*[text()=concat('We cannot find this car, please click on "I don',"'",'t know my car reg" above')]' cannot be evaluated or does notresult in a WebElement (WARNING: The server did not provide any stacktrace information)

Кто-нибудь знает, почему драйвер Selenium IE выдает это исключение?

Похоже, что функция concat либо не существует для IE, либо работает иначе. Было бы это правдой?

Большое спасибо

0
mpssantos 20 Дек 2013 в 19:07

2 ответа

Лучший ответ

IE не предоставляет встроенной реализации xpath, поэтому селен должен предоставлять свою собственную, и вполне может быть, что это один из случаев, когда он падает. Общая рекомендация - никогда не использовать xpath, если вам это не нужно, а вместо этого использовать селекторы css, так как это работает намного быстрее. Я не уверен, что это возможно, потому что вы не разместили html.

1
Paul Harris 20 Дек 2013 в 16:32

Пара вариантов:

Используйте частичное совпадение текста в XPath:

//*[contains(text(), "We cannot find this car, please click on")]

Найдите элемент по имени класса:

findElement.ByClass("rich-message-label");
0
Nathan Dace 20 Дек 2013 в 17:55