Python selenium-使用browser.find_element_by_id()isn';t查找ID为的对象

Python selenium-使用browser.find_element_by_id()isn';t查找ID为的对象,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,我对硒有点问题。作为一个整体,我对Selenium、web抓取和python都是新手。我正在做一个实践项目,我可以直接从IDE发送电子邮件 我能够很好地在“发送到”、“抄送”和“主题行”中输入内容。我在输入正文时遇到问题 以下是我的电子邮件/检查元素的屏幕截图: 正如您在这张图像中所看到的(通过stackOverflow像素化,但我认为您可以理解,主体是一个ID为“tinymce”的大框。表示此文本输入的代码块是: <body id="tinymce" class=&

我对硒有点问题。作为一个整体,我对Selenium、web抓取和python都是新手。我正在做一个实践项目,我可以直接从IDE发送电子邮件

我能够很好地在“发送到”、“抄送”和“主题行”中输入内容。我在输入正文时遇到问题

以下是我的电子邮件/检查元素的屏幕截图:

正如您在这张图像中所看到的(通过stackOverflow像素化,但我认为您可以理解,主体是一个ID为“tinymce”的大框。表示此文本输入的代码块是:

<body id="tinymce" class="mce-content-body mce-inactive-editor" data-id="ZmHtmlEditor1_body" 
contenteditable="true" style="font-family: arial, helvetica, sans-serif; font-size: 10pt; color: rgb(0, 
0, 0); width: 696px; height: 212px;" data-mce-style="font-family: arial, helvetica, sans-serif; font-
size: 10pt; color: #000000;" dir="LTR" aria-label="Compose body"><div><br data-mce-bogus="1"></div>
</body>
我首先单击正文文本以激活输入,然后单击内容的sendkeys

    selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="tinymce"]"}
  (Session info: chrome=84.0.4147.125)
你可以用

find_element_by_id()

但是,如果在执行命令之前未加载元素,则错误将是相同的 为此,您可以使用以下方法

import time
time.sleep(5)
在打开网页后使用time.sleep,以便在执行任何操作之前可以完全加载该网页

以在您必须诱导的元素内发送字符序列,从而使
元素可单击()
,并且您可以使用以下任一方法:

  • 使用
    CSS\u选择器

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "body.mce-content-body.mce-inactive-editor#tinymce"))).sendKeys(content)
    
  • 使用
    XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//body[@class='mce-content-body mce-inactive-editor' and @id='tinymce']"))).sendKeys(content)
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

我不认为这是问题所在-我的整个网站都是事先加载的。我在项目早期遇到了类似的问题,这是在使用time.sleep()时遇到的使用,但已为此加载页面。如果要在输入区域中插入任何内容,无需单击它,只需将键发送到textarea元素,可能是这样,但我仍然找不到该元素。
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//body[@class='mce-content-body mce-inactive-editor' and @id='tinymce']"))).sendKeys(content)
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC