发送密钥不工作 selenium webdriver python
Send keys not working selenium webdriver python
我需要将文本发送到描述文本区域。单击后会清除一些预定义的文本。我尝试在 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")
正如您提到的 send_keys("TEST")
不起作用,有几种替代方法可以将 character sequence
发送到各个字段,如下所述:
使用Keys.NUMPAD3
[模拟send_keys("3")
]:
login.send_keys(Keys.NUMPAD3)
将JavascriptExecutor
与getElementById
一起使用:
self.driver.execute_script("document.getElementById('login_email').value='12345'")
将 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
至 [= 的帮助25=] 在文本区域清除 predefined text
然后使用 send_keys
填充文本字段如下:
self.driver.execute_script("document.getElementById('manage_description').click()")
self.driver.find_element_by_id('manage_description').send_keys("TEST")
更新:
正如你提到的,有时它会起作用,有时它不起作用,所以我建议如下:
- 为
textarea
引入 ExplicitWait
可点击。
- 也使用
javascript
发送textarea
内的text
。
您的代码将如下所示:
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);
我需要将文本发送到描述文本区域。单击后会清除一些预定义的文本。我尝试在 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")
正如您提到的 send_keys("TEST")
不起作用,有几种替代方法可以将 character sequence
发送到各个字段,如下所述:
使用
Keys.NUMPAD3
[模拟send_keys("3")
]:login.send_keys(Keys.NUMPAD3)
将
JavascriptExecutor
与getElementById
一起使用:self.driver.execute_script("document.getElementById('login_email').value='12345'")
将
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
至 [= 的帮助25=] 在文本区域清除 predefined text
然后使用 send_keys
填充文本字段如下:
self.driver.execute_script("document.getElementById('manage_description').click()")
self.driver.find_element_by_id('manage_description').send_keys("TEST")
更新:
正如你提到的,有时它会起作用,有时它不起作用,所以我建议如下:
- 为
textarea
引入ExplicitWait
可点击。 - 也使用
javascript
发送textarea
内的text
。 您的代码将如下所示:
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);