首页 > 解决方案 > Python Selenium 元素并非难处理

问题描述

Selenium WebDriver throws Exception in thread “main” 
org.openqa.selenium.ElementNotInteractableException 1 answer
How to resolve ElementNotInteractableException: Element is not visible 
in Selenium webdriver? 3 answers

我尝试了这两个,并没有从中得到任何东西。

这个元素是输入元素,我需要向它发送特定的变量。

这是元素:

<input name="ds_nm" id="ds_nm" type="text" size="11" maxlength="40" 
value="ENTER NAME" title="ENTER NAME" class="grayInput" 
onfocus="text_clear()" onblur="text_hint()" 
onkeypress="if(event.keyCode == 13){SearchSano();}">

这是我到目前为止写的:

import time
import requests
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome('./chromedriver')
from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome('./chromedriver')
url="ICAN'T SHARE PERSONAL INFO, SORRY"
ConsumerName="MR.Anderson"

driver.get(url)
time.sleep(5)
CN_Insert = driver.find_element_by_css_selector('form#ds_nm')
hov = ActionChains(driver).move_to_element(CN_Insert)
hov.perform()
CN_Insert.clear()
CN_Insert.send_keys(ConsumerName)

我安全地假设我需要通过单击占位符文本来激活输入菜单。但我就是无法正确编码。

笔记

应 Kajal Kundu 的要求重新发布。

标签: javascriptpythonseleniumelement

解决方案


我认为问题是当 webdriver 没有加载页面时 python 脚本完成。WebDriverWait 可以帮助您解决问题。我将举一个使用方式的例子。

WebDriverWait(driver, 1000).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "textarea#text")))

上面的代码将等待 1000 秒直到textarea#text可见。


推荐阅读