silenium
поиск по CSS "[id^='ПН_']" выдает три элемента
я меняю на"[id^='ПН_']:first-child .ivtitle a" и он не находит ни одного.
пробовал сделать по xpass By.xpath("//input[@id =\"ПН_\"]")) , но по xpass не находит ничего
поиск осуществляется по неизменяемой части id либо class либо value
У webdriver есть два метода findElement - находит один элемент по атрибуту который вы указываете, а есть еще findElements - находит все элементы по атрибуту и возвращает список всех найденых элементов. Вы можете воспользоваться вторым методом и просто взять первый элемент из списка
Сам так пользуюсь всегда получаю список, и потом на нужный элемент кликаю, но в данной ситуации стало интересно можно ли выбрать всегда первый\последний найденный элемент.
driver.findElement(By.xpath("//input[contains(@id,‘ПН’)][1]"))
вот так кликает по первому
driver.findElement(By.xpath("//input[contains(@id,‘ПН’)]/tr[last()]"))
а так падает NoSuchElementEx
driver.findElement(By.xpath("//input[contains(@id,‘ПН’)][1]"))
вот так кликает по первому
driver.findElement(By.xpath("//input[contains(@id,‘ПН’)]/tr[last()]"))
а так падает NoSuchElementEx
Возникла ситуация где нужно независимо от количества элементов на странице всегда кликать на последний(сначала думал на первый), можно сделать через list, написать метод, но стало интересно можно ли в локаторе просто указать последний из списка
Ввела Вас в заблуждение: эти sizzle selector работают только с самим элементом без селектора, то есть div:first-child будет работать, а то что выше написано - нет. Может так сработает [id^=‘ПН_’] div:first-child или div:first-child [id^=‘ПН_’] (div замените на свой элемент)