Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用selenium清除html输入框_Python_Selenium_Selenium Webdriver - Fatal编程技术网

Python 使用selenium清除html输入框

Python 使用selenium清除html输入框,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我确实试图清除上的输入,但clear()函数不起作用。关于如何清除输入框有什么想法吗 from selenium import webdriver driver = webdriver.Chrome() driver.get("https://www.indeed.com") #this is not clearning the input elem2 = driver.find_element_by_id("text-input-where").clear() 使用JavaScript将值设

我确实试图清除上的输入,但clear()函数不起作用。关于如何清除输入框有什么想法吗

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.indeed.com")
#this is not clearning the input
elem2 = driver.find_element_by_id("text-input-where").clear()

使用JavaScript将值设置为空字符串:

driver.execute_script('arguments[0].value = "";', driver.find_element_by_id("text-input-where"))

使用JavaScript将值设置为空字符串:

driver.execute_script('arguments[0].value = "";', driver.find_element_by_id("text-input-where"))

您没有使用等待,这也是一个问题

因此,首先使用wait,正如@Sers所述,使用JavaScript执行器

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

    driver = webdriver.Chrome()
    driver.get("https://www.indeed.com")

    WebDriverWait(browser, 60).until(EC.visibility_of_element_located((By.ID, 'text-input-where')))

    elem2 = driver.find_element_by_id("text-input-where")

    driver.execute_script('arguments[0].value = "";', elem2)
下面是我的Java代码:

WebDriver driver = new ChromeDriver();
driver.get("https://www.indeed.com");
WebDriverWait waiter = new WebDriverWait(driver, 60);
waiter.until(ExpectedConditions.visibilityOfElementLocated(By.id("text-input-where")));
WebElement element = driver.findElement(By.id("text-input-where"));

((JavascriptExecutor) driver).executeScript("arguments[0].value ='';", element);

您没有使用等待,这也是一个问题

因此,首先使用wait,正如@Sers所述,使用JavaScript执行器

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

    driver = webdriver.Chrome()
    driver.get("https://www.indeed.com")

    WebDriverWait(browser, 60).until(EC.visibility_of_element_located((By.ID, 'text-input-where')))

    elem2 = driver.find_element_by_id("text-input-where")

    driver.execute_script('arguments[0].value = "";', elem2)
下面是我的Java代码:

WebDriver driver = new ChromeDriver();
driver.get("https://www.indeed.com");
WebDriverWait waiter = new WebDriverWait(driver, 60);
waiter.until(ExpectedConditions.visibilityOfElementLocated(By.id("text-input-where")));
WebElement element = driver.findElement(By.id("text-input-where"));

((JavascriptExecutor) driver).executeScript("arguments[0].value ='';", element);

您还可以尝试发送退格键:

def clear_text(element):
    length = len(element.get_attribute('value'))
    element.send_keys(length * Keys.BACKSPACE)

您还可以尝试发送退格键:

def clear_text(element):
    length = len(element.get_attribute('value'))
    element.send_keys(length * Keys.BACKSPACE)

我想指出的第一件事是你正在使用

elem2=driver.find_element_by_id(“text input where”).clear()

clear()–清除任何文本类型元素的值。它不允许任何参数,返回类型为void。因此
elem2
将为空

其次,我们可以根据被测试的应用程序使用多种方法的组合

有时,
driver.find\u element\u by\u id(“text input where”)。如果不先单击元素,clear()将不起作用。所以我们可以

driver.find_element_by_id("text-input-where").click();
driver.find_element_by_id("text-input-where").clear();
driver.find_element_by_id("text-input-where").sendKeys(textContent);
或者我们也可以使用Actions类和Webdriver等待

elem2 = WebDriverWait(browser, 60).until(EC.visibility_of_element_located((By.ID, 'text-input-where')))
webdriver.ActionChains(driver).move_to_element(elem2).click(elem2).perform()
elem2.clear();
或者如本文所述,我们可以模拟CTRL+A和DEL键

driver.find_element_by_id("text-input-where").click();
driver.find_element_by_id("text-input-where").send_keys(Keys.CONTROL + "a");
driver.find_element_by_id("text-input-where").send_keys(Keys.DELETE);

我想指出的第一件事是你正在使用

elem2=driver.find_element_by_id(“text input where”).clear()

clear()–清除任何文本类型元素的值。它不允许任何参数,返回类型为void。因此
elem2
将为空

其次,我们可以根据被测试的应用程序使用多种方法的组合

有时,
driver.find\u element\u by\u id(“text input where”)。如果不先单击元素,clear()将不起作用。所以我们可以

driver.find_element_by_id("text-input-where").click();
driver.find_element_by_id("text-input-where").clear();
driver.find_element_by_id("text-input-where").sendKeys(textContent);
或者我们也可以使用Actions类和Webdriver等待

elem2 = WebDriverWait(browser, 60).until(EC.visibility_of_element_located((By.ID, 'text-input-where')))
webdriver.ActionChains(driver).move_to_element(elem2).click(elem2).perform()
elem2.clear();
或者如本文所述,我们可以模拟CTRL+A和DEL键

driver.find_element_by_id("text-input-where").click();
driver.find_element_by_id("text-input-where").send_keys(Keys.CONTROL + "a");
driver.find_element_by_id("text-input-where").send_keys(Keys.DELETE);