通过Selenium,我尝试在一个受欢迎的网站上输入用户名,但是由于某种原因,我不明白,这是行不通的。一切打开,在所需的输入字段上单击,但是在此之后立即尝试输入文本时出现错误。 这是我的代码:
webdriverDir = "./chromedriver.exe"
home_url = 'https://appleid.apple.com/account/'
browser = webdriver.Chrome(executable_path=webdriverDir)
browser.get(home_url)
elem = browser.find_element_by_id("firstNameInput")
elem.click()
elem.send_keys('namename')
time.sleep(5)
我还尝试将解决方案更改为此:
browser.find_element_by_id("firstNameInput").send_keys("namename")
但是它也不起作用。我不明白怎么回事。
还尝试了xpath
,class_name
和css_selector
。结果是相同的,或者根本就没有检测到元素。尽管所有内容都是从控制台的元素代码复制的。
错误代码:
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
哪里有错误?还是网站本身?
答案 0 :(得分:0)
ID为SELECT Name, SUM(Amount) AS TAmnt,
ProductPrice-SUM(Amount) AS OutB
FROM t1
GROUP BY Name;
的元素不是输入,而是自定义标记,并且您的SELECT Name,SUM(Amount) AS TAmnt,
SUM(ProductPrice)-SUM(Amount) AS OutB
FROM t1
GROUP BY Name;
命令无法访问该元素。
您要做的是访问父元素中存在的输入。
firstNameInput
答案 1 :(得分:0)
要将字符序列发送到名字字段,您必须为element_to_be_clickable()
引入 WebDriverWait ,您可以使用以下任一Locator Strategies:
使用CSS_SELECTOR
:
driver.get("https://appleid.apple.com/account/")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "first-name-input#firstNameInput input"))).send_keys("haruhi")
使用XPATH
:
driver.get("https://appleid.apple.com/account/")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='form-label' and normalize-space()='First name']//preceding::input[1]"))).send_keys("haruhi")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
浏览器快照: