Поиск текста элемента и последующий клик по этому элементу

webdriver
python
Теги: #<Tag:0x00007fedc0217978> #<Tag:0x00007fedc0217770>

(Jeyson X) #1

Всем привет.
Подскажите как можно кликнуть по этому элементу:

<div tabindex="0" role="tab">
    <input type="text" tabindex="-1" role="presentation" style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;"></input>
    <div class="gwt-Label" style="white-space: nowrap;">
        Комісійні
    </div>
</div>

Искал вот так:
com = driver.find_element_by_link_text('Комісійні')
com.click()

получаю ошибку
selenium.common.exceptions.NoSuchElementException: Message: u'Unable to find element with link text == \u041a\u043e\u043c\u0456\u0441\u0456\u0439\u043d\u0456 \u042e\u0410'

я так понимаю, что сначала надо:
- получить текст этого элемента,
- а потом его декодировать
- и потом уже подставить в find_element_by_link_text,
но не могу понять как это сделать?

точнее наверно больше даже проблема с получением текста этого элемента...


(Евгений Бухгаммер) #2

Вы используете метод, который будет искать ссылку, но в приведенном коде нет href'a.

Читаем документацию:
4.4. Locating Hyperlinks by Link Text
Use this when you know link text used within an anchor tag. With this strategy, the first element with the link text value matching the location will be returned. If no element has a matching link text attribute, a NoSuchElementException will be raised.

у Вас это div, а не anchor, соответственно этот метод даже не будет заглядывать в ваш div.


(Jeyson X) #3

понятно
и что лучше использовать?


(Roy Obenon) #4

Ээээ, можно через className, css, xpath


(Andriy Yarish) #5

Xpath: " //div[contains(text(),'Комісійні') ] "


(Jeyson X) #6

Огромное спасибо )))
а то я до этого пробовал "//div[contains('Комісійні')]"
и оно все равно ругалось ))