Как перейти на <DIV>внутри другого <DIV>с в селене - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь нажать на кнопку, которая находится во вложенных DIV.Ниже приведен HTML

<div class="chat-message-container ngi bot" chat-msg-id="EzPtItD3exi2lTGS3SQkV0-h|0000016" chat-msg-text="What is the intended purpose of your investment">
            <div class="message-bubble">

                <div class="message-text"><p>What is the intended purpose of your investment</p>
                </div>
                >
            </div>
            <div class="attachment-container">
        <div id="0attachment" style="display: block" class="attachment">
            <div class="attachment-info">
                <div class="attachment-title"></div>
                <p class="attachment-subtitle-1"></p>
                <p class="attachment-subtitle-2"></p>
                <div class="carousel-counter-container">
                    <button type="button" id="0prev" class="carousel-btn-ngi" data-atura-carousel="prev">&lt;</button>
                    <p class="carousel-counter" }"="">1/1</p>
                    <button type="button" id="0next" class="carousel-btn-ngi" data-atura-carousel="next">&gt;</button>
                </div>
            </div>

            <div class="action-button-container"><a href="0 - 3 years" class="link-as-button quick-reply" data-instant-message-reply-ngi="" data-button-display-value="0 - 3 years">0 - 3 years</a><a href="3 - 5 years" class="link-as-button quick-reply" data-instant-message-reply-ngi="" data-button-display-value="3 - 5 years">3 - 5 years</a><a href="over 5 years" class="link-as-button quick-reply" data-instant-message-reply-ngi="" data-button-display-value="over 5 years">over 5 years</a>
            </div>
        </div></div>
        </div>

Мне нужно нажать на кнопку 0 - 3 года

Я попытался щелкнуть по элементу с помощью xpath, как показано ниже driver.findElement (By.xpath ("// * [@ id = '0attachment'] / div [2] / a [1]")). Click ();

это не сработало.Я думаю, что это из-за вложенной структуры.Я читал о методе переключения.Но я не думаю, что это можно использовать для переключения внутри другого DIV

Пожалуйста, помогите

1 Ответ

1 голос
/ 28 апреля 2019

К click() для элемента с текстом 0 - 3 года необходимо заставить WebDriverWait , чтобы требуемый элемент был активным , и вы можете использовать одно из следующих решений:

  • Использование LINK_TEXT:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "0 - 3 years"))).click()
    
  • Использование PARTIAL_LINK_TEXT:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "0 - 3 years"))).click()
    
  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.action-button-container>a.link-as-button.quick-reply[data-button-display-value='0 - 3 years']"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='action-button-container']/a[@class='link-as-button quick-reply' and contains(., '0 - 3 years')]"))).click()
    
  • Примечание : необходимо добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...