为什么我不能用javascript清除输入字段?

时间:2016-08-15 01:12:24

标签: javascript java selenium

我想清楚&更改给定网址上的输入值。我使用的js什么也没做,导致没有错误。为什么会发生这种情况?如何解决?

@Test
public void clearField() throws Exception {
    String url = "https://sfbay.craigslist.org/search/pen/apa?hasPic=1&search_distance=25&" +
            "postal=94014&nh=75&nh=80&min_price=1500&max_price=2500&bedrooms=1&bathrooms=1";
    //url = "https://sfbay.craigslist.org/search/pen/apa?housing_type=1";//Clear & set value works with this url.
    browser.get(url);

    WebElement element = browser.findElement(By.name("search_distance"));
    String char_sequence = "10";

    //Clear the field
    send_keys_v2(element, "");
    //Re write the field
    send_keys_v2(element, char_sequence);
}

public void send_keys_v1(WebElement element, String char_sequence) {
    ((JavascriptExecutor) browser).executeScript("arguments[0].value='" +
            char_sequence + "';", element);
}

public void send_keys_v2(WebElement element, String char_sequence) {
    ((JavascriptExecutor) browser).executeScript("arguments[0].setAttribute=('value', '" +
            char_sequence + "');", element);
}

参考文献:Set value of input instead of sendKeys() - selenium webdriver nodejs

How can I consistently remove the default text from an input element with Selenium?

2 个答案:

答案 0 :(得分:1)

尝试在Selenium中使用:

WebElement.clear()

  

void clear()如果此元素是文本输入元素,则会清除   价值。对其他元素没有影响。文本输入元素是   INPUT和TEXTAREA元素。 More info here

答案 1 :(得分:1)

一个可能和可能的答案是,在您要清除的元素之前,您有另一个具有相同名称的元素。

请检查html并检查,如果找到多个元素,则会拍摄第一个元素。

作为替代方案,您可以使用css选择器,如:

.searchInput[name*=search_distance]