cLa*_*Lax 3 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()
Run Code Online (Sandbox Code Playgroud)
小智 8
我想指出的第一件事是你正在使用
\n\n\n\n\nelem2 = driver.find_element_by_id("文本输入位置").clear()
\n
clear() \xe2\x80\x93 清除任何文本类型元素的值。它不允许\xe2\x80\x99 允许任何参数,并且其返回类型为void。所以elem2将为空。
其次,我们可以根据测试的应用程序使用多种方法的组合。
\n\n有时,driver.find_element_by_id("text-input-where").clear()如果未首先单击元素,则不起作用。所以我们可以做,
driver.find_element_by_id("text-input-where").click();\ndriver.find_element_by_id("text-input-where").clear();\ndriver.find_element_by_id("text-input-where").sendKeys(textContent);\nRun Code Online (Sandbox Code Playgroud)\n\n或者我们也可以使用 Actions 类和 Webdriver 等待。
\n\nelem2 = WebDriverWait(browser, 60).until(EC.visibility_of_element_located((By.ID, \'text-input-where\')))\nwebdriver.ActionChains(driver).move_to_element(elem2).click(elem2).perform()\nelem2.clear();\nRun Code Online (Sandbox Code Playgroud)\n\n或者正如这个答案中提到的,我们可以模拟 CTRL + A 和 DEL 键。
\n\ndriver.find_element_by_id("text-input-where").click();\ndriver.find_element_by_id("text-input-where").send_keys(Keys.CONTROL + "a");\ndriver.find_element_by_id("text-input-where").send_keys(Keys.DELETE);\nRun Code Online (Sandbox Code Playgroud)\n
您没有使用等待,这也是一个问题。
因此,首先使用 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)
Run Code Online (Sandbox Code Playgroud)
下面的 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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4348 次 |
| 最近记录: |