如何从内容可编辑div中替换选定的字符串?

问题描述 投票:1回答:1

我试图通过使用python和selenium-webdriver替换contenteditable =“true”div标签中的章节标题,起初我正在寻找章节标题,这通常是在第一行...然后我正在替换它空值和保存..但刷新浏览器后它没有保存。但我看到代码正在运行。这是我的代码

##getting content editable div tag
input_field = driver.find_element_by_css_selector('.trumbowyg-editor')
### getting innerHTML of content editable div
chapter_html = input_field.get_attribute('innerHTML')
chapter_content = input_field.get_attribute('innerHTML')
if re.search('<\w*>', chapter_html):
  chapter_content = re.split('<\w*>|</\w*>', chapter_html)
  first_chapter = chapter_content[1]
  ### replacing first_chapter with ''
  chapter_replace = chapter_html.replace(first_chapter, '')
  ### writing back innerHTML without first_chapter string
  driver.execute_script("arguments[0].innerHTML = arguments[1];",input_field, chapter_replace)
  time.sleep(1)
  ## click on save button
  driver.find_element_by_css_selector('.btn.save-button').click()

我怎么能处理这个?当我手动操作时它正在工作(我的意思是它可能不是站点问题/ bug)...请帮助...

相关HTML如下:

<div class="trumbowyg-editor" dir="ltr" contenteditable="true">
    <p>Chapter 1</p>
    <p> There is some text</p>
    <p> There is some text</p>
    <p> There is some text</p>
</div>
python-3.x python-2.7 selenium selenium-webdriver contenteditable
1个回答
0
投票

根据您共享的HTML以用空值替换章节标题,您必须使用设置为expected_conditionsvisibility_of_element_located子句来引导WebDriverWait,并且可以使用以下代码块:

page_number = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='trumbowyg-editor' and @contenteditable='true']/p[contains(.,'Chapter')]")))
driver.execute_script("arguments[0].removeAttribute('innerHTML')", page_number)
#or
driver.execute_script("arguments[0].removeAttribute('innerText')", page_number)
#or
driver.execute_script("arguments[0].removeAttribute('textContent')", page_number)
© www.soinside.com 2019 - 2024. All rights reserved.