Форум сайта python.su
0
Всем доброй ночи! Я новичок в Python. Не могу понять как кликнуть по кнопке. Ввод логина пароля реализовал. А вот клик по кнопке не могу. Через js понятно как. А тут не могу понять. Даже поисковик не помог нигде не нашел решения. Может плохо искал. Тыкните на решение.
Офлайн
33
Используйте для кнопки метод click().
Можно еще для формы или для элемента формы использовать submit().
http://webdriverplus.org/en/latest/actions.html
Офлайн
0
Что то не получается. Мне нужно кликнуть по диву. Если писать вот так, то возникает ошибка что атрибут не найден
elem = driver.find_element_by_css_selector('div')
elem.send_keys('logButton').click() – в этом месте что писать в send_keys? id элемента? или атрибут?
Офлайн
33
Ну див то не кнопка!
Если нужно именно запостить форму, попробуйте
send_keys('mypassword\n') для текстового поля ввода.
Если нужен именно клик, можно взять идею отсюда:
http://sqa.stackexchange.com/questions/2918/how-to-click-a-link-button-implemented-as-a-div-or-span-element-with-webdriver
Офлайн
0
По диву кликнуть получилось. А если у дива не id а класс то что лучше использовать? и как кликнуть по ссылке?
Офлайн
33
SckatikВсе есть в документации:
А если у дива не id а класс то что лучше использовать? и как кликнуть по ссылке?
Офлайн
0
Пытаюсь сделать как в документации. Есть такая конструкция:
<div parentid="div_zvRmisipFbM" alignmargin="0,0,0,0" id="div_zfzMRJxiSIu" type="Control/Field:FieldButton" wscontrol="true" class="ws-field-button ws-control-inactive" tabindex="0" hidefocus="true" style="z-index: 1; float: left;"><button class="ws-input-control-element ws-field-button-element btn classic ws-default-button" title="" type="button"><div class="ws-field-button-medium ws-field-button-text-classic ws-field-button-text"><div class="ws-field-button-left"></div><div class="ws-field-button-right"></div><div class="ws-button-text-element ws-field-button-text-container-classic">+ Сотрудник</div></div></button></div>
driver.find_element_by_id("div_zfzMRJxiSIu").click() driver.find_element_by_xpath("//button[@type='button']").click()
Traceback (most recent call last): File "C:\test.py", line 14, in <module> driver.find_element_by_id("div_zfzMRJxiSIu").click() File "C:\Python32\lib\selenium\webdriver\remote\webdriver.py", line 188, in find_element_by_id return self.find_element(by=By.ID, value=id_) File "C:\Python32\lib\selenium\webdriver\remote\webdriver.py", line 667, in find_element {'using': by, 'value': value})['value'] File "C:\Python32\lib\selenium\webdriver\remote\webdriver.py", line 155, in execute self.error_handler.check_response(response) File "C:\Python32\lib\selenium\webdriver\remote\errorhandler.py", line 147, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: 'Unable to locate element: {"method":"id","selector":"div_zfzMRJxiSIu"}'
Отредактировано Sckatik (Март 24, 2013 18:43:57)
Офлайн
33
Элемент точно присутствует на странице в момент вызова метода?
Может он через JavaScript создается или подгружается?
Посмотрите что есть в browser.page_source и найдите сами нужный элемент.
Офлайн
0
Через debuger Firefox элемент есть. попробую тогда Вашим способом через browser.page_source
Офлайн
Может быть, браузер не успевает отрисовать этот DIV, попробуйте подождать пару секунд и потом искать элемент. Если не получается, втыкаете pdb и начинает ручками исследовать состояние системы.
Офлайн