Mam pytanie. Mam takie elementy:
<a>
element z id = someGenerated Some: Same: 0: name
<a>
element z id = someGenerated Some: Same: 0: sename
<a>
element z id = someGenerated Some: Same: 1: name
<a>
element z id = someGenerated Some: Same: 1: sername
Potrzebuję selektora CSS, aby uzyskać nazwy. Problem w tym, że nie wiem, jak to zdobyć. Próbowałem a[id*='Some:Same']
- zwróciło wszystkie <a>
elementy. Po uzyskaniu elementów, których id kończy się na nazwę. Ale nie podoba mi się ten pomysł. Myślę, że da się to zrobić jakimś innym selektorem.
css
css-selectors
webdriver
TarasLviv
źródło
źródło
<a>
tagów, które chcesz wybrać, i tych, których nie chcesz. Łatwiej będzie pomóc zobaczyć prawdziwy kod.Odpowiedzi:
Spróbuj tego:
a[id*='Some:Same'][id$='name']
W ten sposób otrzymasz wszystkie
a
elementy zawierające idi mieć identyfikator kończący się na
źródło
<constant><variable><constant>
name.//driver.findElements(By.xpath("//iframe[contains(@id*,'FrameID')]")).size();
gdzie FrameID jest częścią początkową. W każdym razie załatwił//a[contains(@id,'Some:Same') and contains(@id,'name')]
mi sprawę. Więc dawaj +1 swojemu koledze.*
następnejid
?<div id='element_123_wrapper_text'>My sample DIV</div>
Operator ^ - Dopasuj elementy, które zaczynają się od podanej wartości
div[id^="element_123"] { }
Operator $ - Dopasuj elementy, które kończą się podaną wartością
div[id$="wrapper_text"] { }
Operator * - Dopasuj elementy, które mają atrybut zawierający daną wartość
div[id*="wrapper_text"] { }
źródło
Jedyny selektor, jaki widzę, to
a[id$="name"]
(wszystkie linki z identyfikatorem kończące się na „nazwa”), ale nie jest tak restrykcyjny, jak powinien.źródło