Answers:
driver.find_element_by_id('foo').clear()
您可以使用
webElement.clear();
如果此元素是文本输入元素,则将清除该值。
请注意,此事件引发的事件可能与您预期的不同。特别是,我们不会触发任何键盘或鼠标事件。如果您想确保触发了键盘事件,请考虑使用sendKeys(CharSequence)
。例如:
webElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop
要么:
webElement.sendKeys(Keys.CONTROL + "a");
webElement.sendKeys(Keys.DELETE);
webElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop
在我遇到奇怪的情况时才提供帮助
我遇到了.clear()无法正常工作的领域。结合使用前两个答案可解决此问题。
from selenium.webdriver.common.keys import Keys
#...your code (I was using python 3)
driver.find_element_by_id('foo').send_keys(Keys.CONTROL + "a");
driver.find_element_by_id('foo').send_keys(Keys.DELETE);
;
?
;
在python中不是必需的。我是偶然添加的。接得好。
对于java
driver.findelement(By.id('foo').clear();
要么
webElement.clear();
如果此元素是文本输入元素,则将清除该值。
这是一般语法
driver.find_element_by_id('Locator value').clear();
driver.find_element_by_name('Locator value').clear();
通过对clear()的简单调用,在DOM中就会出现相应的输入/文本区域组件仍具有其旧值的情况,因此对该组件进行的任何后续更改(例如,用新值填充该组件)都不会及时得到处理。
如果看一下硒源代码,您会发现clear()方法记录在案并带有以下注释:
/ **如果此元素是文本输入元素,则将清除该值。对其他元素没有影响。文本输入元素是INPUT和TEXTAREA元素。请注意,此事件引发的事件可能与您预期的不同。特别是,我们不会触发任何键盘或鼠标事件。如果要确保触发键盘事件,请考虑将{@link #sendKeys(CharSequence ...)}之类的键与退格键一起使用。为确保您收到更改事件,请考虑使用Tab键跟随对{@link #sendKeys(CharSequence ...)}的调用。* /
因此,使用此有用的提示来清除输入/文本区域(已经具有值的组件)并为其分配新的值,您将获得如下代码:
public void waitAndClearFollowedByKeys(By by, CharSequence keys) {
LOG.debug("clearing element");
wait(by, true).clear();
sendKeys(by, Keys.BACK_SPACE.toString() + keys);
}
public void sendKeys(By by, CharSequence keysToSend) {
WebElement webElement = wait(by, true);
LOG.info("sending keys '{}' to {}", escapeProperly(keysToSend), by);
webElement.sendKeys(keysToSend);
LOG.info("keys sent");
}
private String escapeProperly(CharSequence keysToSend) {
String result = "" + keysToSend;
result = result.replace(Keys.TAB, "\\t");
result = result.replace(Keys.ENTER, "\\n");
result = result.replace(Keys.RETURN, "\\r");
return result;
}
抱歉,此代码是Java而不是Python。另外,我还不得不跳过其他的“ waitUntilPageIsReady()-方法,这会使这篇文章过长。
希望这对您在硒的旅途中有所帮助!
driver.find_element_by_xpath("path").send_keys(Keys.CONTROL + u'\ue003')
与FireFox一起工作得很好