Selenium => 4BUTTON с тем же HREF, тем же классом, тем же текстом хочу нажать на 4 - PullRequest
0 голосов
/ 09 февраля 2019

Я только что попытался найти элемент на веб-сайте, но не могу его найти. Код:

<a href="#" class="btn btn-default free_send_button">Basla</a>      

Не могли бы вы помочь мне с этим.Существует 4 одинаковых html-кода кнопок: 4 одинаковых href, 4 одинаковых класса, 4 одинаковых текстовых кода ... Я просто хочу нажать 4. Я попробовал несколько кодов, которые я написал ниже.Можете ли вы исправить мои коды, если это возможно и полезно, или какой способ найти элемент - лучший способ сделать это?Спасибо уже ..

self.web.find_element_by_xpath("(//href[text()[contains(.,'#')]])[1]").click()

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Как вы упомянули, класс и текст также совпадают, и вы хотите нажать на последний / четвертый матч, тогда вы можете попробовать следующие локаторы:

locator = "(//a[text()='Basla'])[last()]"
element = driver.find_element_by_xpath(locator)
element.click()

или

locator = "(//a[text()='Basla'])[4]"
element = driver.find_element_by_xpath(locator)
element.click()

или

locator = "(//a[contains(@class, 'free_send_button')])[last()]"
element = driver.find_element_by_xpath(locator)
element.click()

или

locator = "(//a[contains(@class, 'free_send_button')])[4]"
element = driver.find_element_by_xpath(locator)
element.click()

Вы можете написать еще несколько xpath для этого локатора, но я думаю, что вышеупомянутое сработает.

0 голосов
/ 09 февраля 2019

Я просто попытался перейти на имя класса и нашел его. Я надеюсь, что это может быть полезно:

self.web.find_element_by_xpath("(//a[contains(@class,'btn btn-default free_send_button')])[1]").click()
...