发送密钥不工作selenium webdriver python

时间:2017-10-16 12:46:23

标签: python selenium webdriver

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

Textarea看起来像:

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

send_keys无效

self.driver.find_element_by_id('manage_description').send_keys("TEST")

enter image description here

1 个答案:

答案 0 :(得分:1)

正如您提到的 send_keys("TEST") 不起作用,有几种方法可以将character sequence发送到相应的字段,如下所述:

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

    login.send_keys(Keys.NUMPAD3)
    
  2. JavascriptExecutor getElementById 一起使用:

    self.driver.execute_script("document.getElementById('login_email').value='12345'")
    
  3. JavascriptExecutor getElementsById 一起使用:

    self.driver.execute_script("document.getElementsById('login_password')[0].value='password'")
    
  4. 现在提到您的具体问题,正如您提到的I tried to use clear() or click() before sendkeys but nothing works correctly,所以我们会将 javascript 的帮助带到 click() 在文本区域清除predefined text,然后使用 send_keys 填充文本字段,如下所示:

    self.driver.execute_script("document.getElementById('manage_description').click()")
    self.driver.find_element_by_id('manage_description').send_keys("TEST")
    

    更新:

    正如你所提到的,它有时候不起作用,所以我建议如下:

    1. 诱导ExplicitWait textarea可点击。
    2. 使用 javascript text内发送textarea
    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);