Найти - Пользователи
Полная версия: Python+selenium
Начало » Python для новичков » Python+selenium
1 2
Sckatik
Всем доброй ночи! Я новичок в Python. Не могу понять как кликнуть по кнопке. Ввод логина пароля реализовал. А вот клик по кнопке не могу. Через js понятно как. А тут не могу понять. Даже поисковик не помог нигде не нашел решения. Может плохо искал. Тыкните на решение.
Lexander
Используйте для кнопки метод click().
Можно еще для формы или для элемента формы использовать submit().
http://webdriverplus.org/en/latest/actions.html
Sckatik
Что то не получается. Мне нужно кликнуть по диву. Если писать вот так, то возникает ошибка что атрибут не найден
elem = driver.find_element_by_css_selector('div')
elem.send_keys('logButton').click() – в этом месте что писать в send_keys? id элемента? или атрибут?
Lexander
Ну див то не кнопка!
Если нужно именно запостить форму, попробуйте
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
Sckatik
По диву кликнуть получилось. А если у дива не id а класс то что лучше использовать? и как кликнуть по ссылке?
Lexander
Sckatik
А если у дива не id а класс то что лучше использовать? и как кликнуть по ссылке?
Все есть в документации:
http://webdriverplus.org/en/latest/selectors.html
Sckatik
Пытаюсь сделать как в документации. Есть такая конструкция:
<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"}' 
Lexander
Элемент точно присутствует на странице в момент вызова метода?
Может он через JavaScript создается или подгружается?
Посмотрите что есть в browser.page_source и найдите сами нужный элемент.
Sckatik
Через debuger Firefox элемент есть. попробую тогда Вашим способом через browser.page_source
lorien
Может быть, браузер не успевает отрисовать этот DIV, попробуйте подождать пару секунд и потом искать элемент. Если не получается, втыкаете pdb и начинает ручками исследовать состояние системы.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB