Как найти кнопку внутри вложенного тега div через Selenium и Python? - PullRequest
0 голосов
/ 05 июля 2018

Сначала я новичок в Selenium для python. И моя проблема: Я хочу найти кнопку для автоматического нажатия. Вот мой код кнопки:

<div class="check-button button-display">   
<div class="side-way side-way_left">
    <div class="side-button-test middle" >
        <div class="label">Click here !</div>
    </div>
</div>

Я пытаюсь:

browser.find_element_by_css_selector(".side-button-test.middle"), но это не работает. Кто-нибудь может мне помочь.

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Попробуйте это с Xpath,

find_element_by_xpath("//div[contains(text(),'Click here !')]")
0 голосов
/ 05 июля 2018

В соответствии с HTML, которым вы поделились, нажмите на элемент с текстом как Нажмите здесь! вам нужно заставить WebDriverwait , чтобы элемент был кликабельным и вы можете использовать следующее решение:

  • CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.side-way.side-way_left > div.side-button-test.middle > div.label"))).click()
    
  • XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='side-way side-way_left']/div[@class='side-button-test middle']/div[@class='label'][contains(.,'Click here !')]"))).click()
    

Примечание : Вы должны добавить следующий импорт:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
0 голосов
/ 05 июля 2018

попробуйте это:

wait = WebDriverWait(browser, 20)
element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.side-button-test.middle>div')))
element.click()

Пожалуйста, проверьте iframe , если оно находится в iframe/frameset, вам придется переключить фокус вашего вебдрайвера следующим образом:

browser.switch_to.frame(web element)

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

browser.switch_to.defaultContent();

Хотя вы можете попробовать этот xpath тоже:

//div[contains(text(),'Click here !')]

в этом случае код будет:

wait = WebDriverWait(browser, 20)
element = wait.until(EC.element_to_be_clickable((By.XPATH,'//div[contains(text(),'Click here !')]')))
element.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...