元素在发送密钥时不可交互,即使在成功单击之后也是如此



我正在尝试发送用户名和密码的密钥,以便登录以下网站(是的,移动版(:

https://m.bancosecurity.cl/

我总是收到同样的错误:

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable: [object HTMLInputElement] has no size and location
(Session info: chrome=91.0.4472.164)

我的代码是:

Username = driver.find_element_by_xpath('//*[@id="UserName"]')
driver.execute_script("arguments[0].click();", Username)
Username.send_keys("xx.xxx.xxx-x")

产生错误的代码是:

Username.send_keys("xx.xxx.xxx-x")

谢谢!

我可以看到页面上有多个输入,所以尝试使用帮助元素索引访问它

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
username= WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "((//input[@id='UserName'])[2])")))
username.send_keys("Username")
password= WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "((//input[@id='Password'])[2])")))
password.send_keys("passowrd")

因此,上面我刚刚用excplicitWait和send_keys检查了元素是否存在到输入

该页面上有2个元素与//*[@id="UserName"]XPath选择器匹配。第一个不是用send_keys接收用户输入的字段
因此,在使用Seleniumsend_keys向其发送字符串输入时,单击它(尤其是使用JavaScript单击它(不会起任何作用
您应该做两件事来让您的代码在这里工作:

  1. 设置显式等待,以便在访问元素之前加载页面
  2. 使用正确的定位器
    试试这个:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 20)
username = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='panel' and contains(@style,'block')]//*[@id='UserName']")))
username.click()
username.send_keys("xx.xxx.xxx-x")

相关内容

  • 没有找到相关文章

最新更新