Selenium send_keys для охвата элемента, который изменяется в зависимости от ввода текста - PullRequest
0 голосов
/ 22 апреля 2020

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

Это код текстового поля без текста:

        <div class="DraftEditor-editorContainer">
            <div aria-autocomplete="list" aria-describedby="placeholder-3oen9" aria-expanded="false" aria-labelledby="3" class="notranslate public-DraftEditor-content" contenteditable="true" role="combobox" spellcheck="false" id="snippet-editor-field-description" style="outline: none; user-select: text; white-space: pre-wrap; overflow-wrap: break-word;">
                <div data-contents="true">
                    <div class="" data-block="true" data-editor="3oen9" data-offset-key="9otfs-0-0">
                        <div data-offset-key="9otfs-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr">
                          <span data-offset-key="9otfs-0-0">
                            <br data-text="true">
                          </span>
                      </div>
                    </div>
                </div>
            </div>
        </div>

Код текстового поля изменяется, если в тексте есть текст коробка. Это поле с текстом в нем:

<div class="DraftEditor-editorContainer">
    <div aria-autocomplete="list" aria-describedby="placeholder-3oen9" aria-expanded="false" aria-labelledby="3" class="notranslate public-DraftEditor-content" contenteditable="true" role="combobox" spellcheck="false" id="snippet-editor-field-description" style="outline: none; user-select: text; white-space: pre-wrap; overflow-wrap: break-word;">
        <div data-contents="true">
            <div class="" data-block="true" data-editor="3oen9" data-offset-key="9otfs-0-0">
                <div data-offset-key="9otfs-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr">
                  <span data-offset-key="9otfs-0-0">
                    <span data-text="true">EXAMPLE TEXT</span>
                  </span>
                </div>
            </div>
        </div>
    </div>
</div>

Как вы можете видеть, <br data-text="true"> изменяется на <span data-text="true">EXAMPLE TEXT</span> Как бы я мог вставить текст, используя селен

1 Ответ

0 голосов
/ 22 апреля 2020

Попробуйте ниже:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='notranslate public-DraftEditor-content' and @role='combobox']"))).send_keys("Text Test")

Примечание: , пожалуйста, добавьте ниже импорта в ваше решение

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