2015-02-08 2 views
1

У меня есть некоторые HTML код:Regex в выражение XPath

<div> 
    <div id="order-1"></div> 
    <div id="order-2"></div> 
</div> 

Я хочу, чтобы найти все DIVs с идентификаторами 'порядка'. В Ruby я пытаюсь

divs = driver.find_elements :xpath, '//div[matches(@id, "order-[0-9]")]' 

Но Селен дает ошибку

Selenium::WebDriver::Error::InvalidSelectorError: invalid selector: Unable to locate an element with the xpath expression //div[matches(@id, "order-[0-9]")] because of the following error: SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//div[matches(@id, "order-[0-9]")]' is not a valid XPath expression.

Почему?

+1

Параметр 'Функция matches' была введена в XPath 2.0 в 2007 году, но, к сожалению, многие реализации XPath остаются XPath 1.0 реализаций без поддержки этой функции и других, представленных в XPath 2.0. –

+0

@MartinHonnen, thanx! Селен использовал XPath 1.0. Я пытаюсь // div [start-with (@id, 'order-')]. Это работает! –

ответ

0

Вы можете использовать starts-with, хотя это не проверяет число в конце ID:

//div[starts-with(@id,"order-")] 
Смежные вопросы