python - 发送 key 不起作用 selenium webdriver python

标签 python selenium selenium-webdriver webdriver sendkeys

我需要将文本发送到描述文本区域。单击后会清除一些预定义的文本。我尝试在 sendkeys 之前使用 clear() 或 click() 但没有任何效果。它会在那里发送文本,但它仍然是灰色的,保存页面后出现错误,说明中没有文本......我可以使用其他东西代替发送键吗?谢谢

文本区域看起来像:

<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

最佳答案

正如你提到的 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'")
    

现在谈到您的具体问题,正如您提到的 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 发送 texttextarea 内也是。
  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);
    

关于python - 发送 key 不起作用 selenium webdriver python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46770697/

相关文章:

java - TestNG 没有执行套件中的所有测试类

java - 如何避免在每次测试之前执行注释?

java - aria 禁用的 Selenium 代码

Python 正则表达式 : how to do a negative lookahead with a string which don't start immediately?

python - django:单元测试来自响应和 session 的 html 标签

python - 从违反封装的父类(作为子类)调用 "private"变量

java - 如何扩展 Selenium 的 FindBy 注释

python - pandas.concat() 不填充列

c# - 如何使用 Selenium Webdriver 查找没有 id 属性的 div 元素

java - Cucumber - : cannot convert from element type Map<Object, Object> 与 Map<String,String> 类型不匹配