python - 元素不可交互,即使元素在浏览器视图中

我正在编写一个脚本以从 pdf 网站下载教科书,但是,当我试图将这本书输入搜索栏时,我得到了一个错误

selenium.common.exceptions.ElementNotInteractableException: 消息:目标元素不可交互,无法点击

我试图通过使用 EC.element_to_be_clickable((By.XPATH, "//input[@type='text']")) 来解决这个问题,并且使用 time.sleep(4) 没有任何效果,一旦页面加载,搜索栏就会出现,我尝试使用额外的 time.sleep() 来加载额外的时间,但它仍然说当它在那里时元素是不可交互的

这是代码

driver.switch_to.new_window('tab')
driver.get('https://www.pdfdrive.com')
time.sleep(2)
driver.fullscreen_window()
# time.sleep(4)
EC.element_to_be_clickable((By.XPATH, "//input[@type='text']"))
bkSrch = driver.find_element(By.XPATH, "//input[@type='text']") 
bkSrch.send_keys(bookLnk)
time.sleep(2)
bkSrch.send_keys(Keys.SPACE + bookRthr)

`

我也尝试先单击该元素,但它仍然不起作用

我不知道该怎么做

回答1

EC.element_to_be_clickable((By.XPATH, "(//input[@type='text'])[2]"))
bkSrch = driver.find_element(By.XPATH, "(//input[@type='text'])[2]") 
bkSrch.send_keys(bookLnk)
wait = WebDriverWait(driver, 30)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,".fas.fa-times"))).click()
time.sleep(2)
bkSrch.send_keys(Keys.SPACE + bookRthr)

只需单击弹出窗口,您的文本搜索栏也使用了错误的输入标签。

回答2

尝试这个:

driver.get('https://www.pdfdrive.com')
time.sleep(2)
form = driver.find_element(by=By.ID, value='form-container')
inp = elem.find_element(by=By.TAG_NAME, value="input")
search_query = "it is working!"
driver.execute_script(f"arguments[0].value='{search_query}';", inp)

在这些情况下,您可以运行 javascript 代码。

对于弹出窗口,您可以先尝试等待 5-10 秒(time.sleep(5)),然后搜索关闭按钮(如果存在)(使用 try-except),如果存在,只需找到关闭按钮并单击它。

相似文章

最新文章