Это не работает, поскольку вы тестируете X
внутри функции contains
и сравниваете X
со строкой.
//*[contains(@style,"text-size" > X)]
Предполагая, что у вас есть следующие данные:
<html>
<head>
<title>HTMLFont size</title>
</head>
<body>
<h1 style="text-size:30px;">foo</h1>
<p style="text-size:18px;">bar</p>
<div style="text-size:5px;">foobar</div>
</body>
</html>
Чтобы выбрать элементы с указанным атрибутом c size (например, больше X
), вы можете использовать следующие выражения XPath 1.0
. Выберите элемент с text-size > 20
:
//*[contains(@style,"text-size")][substring-before(substring-after(@style,"size:"),"px")>20]
Выберите элементы с размером текста в диапазоне [5:20]:
//*[contains(@style,"text-size")][substring-before(substring-after(@style,"size:"),"px")>4 and substring-before(substring-after(@style,"size:"),"px")<21]
Боковые примечания:
- Вы должны немного изменить эти выражения, если атрибуты
style
, с которыми вы имеете дело, не совсем совпадают. - Если вы не хотите жестко кодировать значение
X
непосредственно в XPath, вы можете передать его как переменную в выражении XPath (+ X +
).
Код:
X= 20
driver.find_element_by_xpath('//*[contains(@style,"text-size")][substring-before(substring-after(@style,"size:"),"px")>" + X + "]')