Очистка поля ввода html с использованием селена - PullRequest
1 голос
/ 25 октября 2019

Я действительно пытаюсь очистить вход, но функция 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()

Ответы [ 4 ]

2 голосов
/ 25 октября 2019

Вы не используете ожидание, что также является проблемой.

Так что сначала используйте wait и, как указано @Sers, используйте JavaScript executor

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);
1 голос
/ 25 октября 2019

Вы также можете попробовать отправить клавиши возврата на клавишу:

def clear_text(element):
    length = len(element.get_attribute('value'))
    element.send_keys(length * Keys.BACKSPACE)
1 голос
/ 25 октября 2019

Используйте JavaScript для установки значения в пустую строку:

driver.execute_script('arguments[0].value = "";', driver.find_element_by_id("text-input-where"))
0 голосов
/ 25 октября 2019

Первое, на что я хотел бы указать, вы используете

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

clear () - очистить значение любого элемента типа текста. Он не допускает никаких параметров, и его тип возвращаемого значения void . Так что elem2 будет нулевым.

Во-вторых, мы можем использовать комбинацию методов в зависимости от тестируемого приложения.

Иногда driver.find_element_by_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);

ИЛИ мы также можем использовать класс действий и ожидания 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...