发送密钥不起作用 selenium webdriver python

vb3*_*381 5 python selenium webdriver sendkeys selenium-webdriver

我需要将文本发送到描述文本区域。点击后会清除一些预定义的文本。我尝试在 sendkeys 之前使用 clear() 或 click() 但没有任何工作正常。它会在那里发送文本,但它仍然是灰色的,并且在保存页面后出现描述中没有文本的错误......我可以使用其他东西而不是发送密钥吗?谢谢

文本区域看起来像:

<textarea id="manage_description" class="eTextArea" name="e.description" cols="" rows="" onfocus="clearDescHint(this);" onblur="resetDescHint(this);" style="color: grey;"></textarea>
Run Code Online (Sandbox Code Playgroud)

send_keys 不起作用

self.driver.find_element_by_id('manage_description').send_keys("TEST")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Deb*_*anB 7

正如您提到 send_keys("TEST")的那样不起作用,有几种替代方法可以将 a 发送character sequence到如下所述的各个字段:

  1. 使用Keys.NUMPAD3[模拟send_keys("3")]:

    login.send_keys(Keys.NUMPAD3)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用JavascriptExecutorgetElementById

    self.driver.execute_script("document.getElementById('login_email').value='12345'")
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用JavascriptExecutorgetElementsById

    self.driver.execute_script("document.getElementsById('login_password')[0].value='password'")
    
    Run Code Online (Sandbox Code Playgroud)

正在添加现在您的具体问题,如你所说I tried to use clear() or click() before sendkeys but nothing works correctly,那么我们将采取帮助javascriptclick()对文本区域以清除predefined text,然后用send_keys填充文本字段,如下所示:

self.driver.execute_script("document.getElementById('manage_description').click()")
self.driver.find_element_by_id('manage_description').send_keys("TEST")
Run Code Online (Sandbox Code Playgroud)

更新 :

正如您所提到的,有时它有时会起作用,因此我建议如下:

  1. 诱发ExplicitWaittextarea是点击。
  2. 使用javascripttexttextarea了。
  3. 您的代码将如下所示:

    my_string = "TEST";
    elem = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "manage_description")))
    self.driver.execute_script("document.getElementById('manage_description').click()")
    self.driver.execute_script("arguments[0].setAttribute('value', '" + my_string +"')", elem);
    
    Run Code Online (Sandbox Code Playgroud)