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)
正如您提到 send_keys("TEST")的那样不起作用,有几种替代方法可以将 a 发送character sequence到如下所述的各个字段:
使用Keys.NUMPAD3[模拟send_keys("3")]:
login.send_keys(Keys.NUMPAD3)
Run Code Online (Sandbox Code Playgroud)使用JavascriptExecutor有getElementById:
self.driver.execute_script("document.getElementById('login_email').value='12345'")
Run Code Online (Sandbox Code Playgroud)使用JavascriptExecutor有getElementsById:
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,那么我们将采取帮助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")
Run Code Online (Sandbox Code Playgroud)
正如您所提到的,有时它有时会起作用,因此我建议如下:
ExplicitWait的textarea是点击。javascript送text内textarea了。您的代码将如下所示:
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)| 归档时间: |
|
| 查看次数: |
7556 次 |
| 最近记录: |