尝试使用send_keys()
方法在登录期间输入用户名。我猜它能够找到输入元素,就像我跑到send_keys
之前一样。通过在send_keys
中发送字符串值,它会抛出错误。
selenium.common.exceptions.WebDriverException:消息:预期[object Undefined] undefined为字符串
我错过了什么?
Python:3.5
硒3.3.1
Firefox Developer Edition或Nightly(当前版本> 52)
我的代码片段:
login_url = "https://korunet.co.nz/"
driver = webdriver.Firefox()
driver.get(login_url)
WebDriverWait(driver, 30).until(ec.visibility_of_element_located((By.CSS_SELECTOR, '#IDToken1')))
elem = driver.find_element_by_css_selector('#IDToken1')
elem.click()
elem.clear()
elem.send_keys("10101")
追踪(最近一次呼叫最后一次):
文件" D:/PycharmProjects/JCBbidEntry/tests/loop2.py",第29行,在 elem.send_keys(" 10101&#34)
文件" C:\ Users \ BaruaR \ AppData \ Roaming \ Python \ Python35 \ site-packages \ selenium \ webdriver \ remote \ webelement.py",第347行,在send_keys中 self._execute(Command.SEND_KEYS_TO_ELEMENT,{' value&#39 ;: keys_to_typing(value)})
文件" C:\ Users \ BaruaR \ AppData \ Roaming \ Python \ Python35 \ site-packages \ selenium \ webdriver \ remote \ webelement.py",第491行,在_execute中 return self._parent.execute(command,params)
文件" C:\ Users \ BaruaR \ AppData \ Roaming \ Python \ Python35 \ site-packages \ selenium \ webdriver \ remote \ webdriver.py",第238行,执行 self.error_handler.check_response(响应)
文件" C:\ Users \ BaruaR \ AppData \ Roaming \ Python \ Python35 \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py",第193行,在check_response中 提出exception_class(消息,屏幕,堆栈跟踪)
答案 0 :(得分:4)
似乎已经解决了,至少对我来说有最新版本的geckodriver 0.16:https://github.com/mozilla/geckodriver/releases/tag/v0.16.0
请注意,版本0.16需要selenium 3.4。
-Erinn
答案 1 :(得分:3)
同样在这里...... 似乎是FIREFOX的一个问题......它与CHROME一样正常工作; - (
答案 2 :(得分:1)
答案 3 :(得分:0)
有Firefox更新,同样的事情发生在我身上。重新安装Geckodriver 64位(https://github.com/mozilla/geckodriver/releases),它对我有用。
答案 4 :(得分:0)
更新到geckodriver 0.17.0为我解决了问题
Firefox 53.0.3
硒3.4.3
Python 3.6
binary = FirefoxBinary('C:\\Program Files (x86)\\Mozilla Firefox\\Firefox.exe')
driver = webdriver.Firefox(firefox_binary=binary)
driver.get(url)
emailInput = driver.find_element_by_id("login-username")
emailInput.send_keys("username")
答案 5 :(得分:0)
对我有用的解决方案是设置值属性,而不是使用send_keys。
driver.execute_script("document.getElementById('login-username').setAttribute('value', 'username')")