Как изменить innerHTML contenteditable элемента - PullRequest
0 голосов
/ 21 октября 2018

Я использую Selenium с Chrome-драйвером и python3.6 для тестирования сайта.У меня есть фрагмент кода на веб-странице следующим образом:

<div tabindex="-1" class="_3F6QL _2WovP">
<div class="_39LWd" style="visibility: visible;">Type a message</div>
<div class="_2S1VP copyable-text selectable-text" contenteditable="true" data-tab="1" dir="ltr" spellcheck="true">*******</div>
</div>

Я хочу заменить ******* на Hello World!, используя Selenium на веб-странице.Как я могу это сделать ?

1 Ответ

0 голосов
/ 21 октября 2018

Чтобы заменить текст ******* текстом Hello World!, так как элемент является элементом React , вам нужно вызвать WebDriverWait , чтобы элемент был активным , и вы можете использовать любое из следующих решений:

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

    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.copyable-text.selectable-text[data-tab='1']")))
    element.click()
    element.clear()
    element.send_keys("Hello World!")
    
  • Использование XPATH:

    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[contains(@class,'selectable-text')][contains(.,'*******')]")))
    element.click()
    element.clear()
    element.send_keys("Hello World!")
    
  • Примечание. Необходимо добавить следующий импорт:

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