Python - нажатие на кнопку с Selenium - PullRequest
0 голосов
/ 24 сентября 2018

Это кнопка, которую я пытаюсь нажать:

<button class="stkv-c-button stkv-us-button-color--background 
    stkv-u-background-color-transition-150 
    stkv-us-button-color--border stkv-us-button-color 
    stkv-us-button-color--fill stkv-c-button 
    stkv-c-button--raised stkv-c-button--big">

    <span class="stkv-c-button__label stkv-c-button__label--big">Vote Now</span>
</button>

Это xpath (извлеченный из Firefox):

[@id='root']/html/body/div/div/div[3]/div/div/footer/div/button"

Я пробовал самые разныеспособы нажать на кнопку, но все безрезультатно.

self.driver.find_element_by_xpath("//*[@id='root']/html/body/div/div/div[3]/div/div/footer/div/button").click()
self.driver.findElement(By.id("Vote Now")).click()
self.driver.find_element_by_name("Vote").send_keys(Keys.ENTER)
self.driver.find_element_by_id('stkv-c-button stkv-us-button-color--background stkv-u-background-color-transition-150 stkv-us-button-color--border stkv-us-button-color stkv-us-button-color--fill stkv-c-button stkv-c-button--raised stkv-c-button--big').click()

Буду признателен за любые предложения!

Мне не повезло с этим.

Ответы [ 4 ]

0 голосов
/ 24 сентября 2018

Согласно HTML, который вы предоставили click() на кнопке с текстом Проголосовать , вы можете использовать любое из следующих решений:

  • CSS_SELECTOR:

    driver.find_element_by_xpath("span.stkv-c-button__label.stkv-c-button__label--big").click()
    
  • XPATH:

    driver.find_element_by_css_selector("//span[@class='stkv-c-button__label stkv-c-button__label--big' and contains(.,'Vote Now')]").click()
    
0 голосов
/ 24 сентября 2018

У вашей кнопки нет идентификатора или имени, поэтому методы find_element_by_name и find_element_by_id не будут работать.find_element_by_class_name кажется логичным выбором, но, к сожалению, он ожидает только 1 класс, и, поскольку ваша кнопка имеет несколько классов, она также не будет работать.Я бы попробовал найти кнопку с ее селектором CSS:

self.driver.find_element_by_css_selector('button.stkv-c-button.stkv-us-button-color--background.stkv-u-background-color-transition-150.stkv-us-button-color--border.stkv-us-button-color.stkv-us-button-color--fill.stkv-c-button.stkv-c-button--raised.stkv-c-button--big').click()

Пока на странице нет другой кнопки с точно таким же селектором CSS, это должно дать вам правильную кнопку.В общем, если вы хотите найти элемент, имеющий несколько классов, например, <button class="A B C">MyButton</button>, то вы можете сделать это с помощью:

self.driver.find_element_by_css_selector('button.A.B.C')
0 голосов
/ 24 сентября 2018

Используйте этот XPath: //button[normalize-space()='Vote Now']

0 голосов
/ 24 сентября 2018

Вы можете найти кнопку, отобразив на ней текст.

locator = "//button[span[text()='Vote Now']]"
self.driver.find_element_by_xpath(locator).click()
...