在调用任何元素的 send_keys() 之前,我首先检查它是否已启用且可见,以免引发异常。
发生的是 is_Displayed 返回 True,当我尝试将 send_keys 发送到该元素时,它仍然会引发 ElementNotVisible 异常。这是某种形式的错误吗?
它在某些网站上有效,但在其他网站上无效。
def login():
elem = browser.find_elements_by_xpath('//input[contains(@name, "user")]')
for elements in elem:
if elements.is_displayed():
if elements.is_enabled():
elements.send_keys(username)
elem = browser.find_elements_by_xpath('//input[contains(@name, "pass")]')
for elements in elem:
if elements.is_displayed():
if elements.is_enabled():
elements.clear()
elements.send_keys(password + Keys.RETURN) #Crashes here
time.sleep(4)
return
最佳答案
试试这个:
def login():
user_elements = browser.find_elements_by_xpath('//input[contains(@name, "user")]')
for user in user_elements:
if user.is_displayed():
if user.is_enabled():
user.send_keys(username)
pass_elements = browser.find_elements_by_xpath('//input[contains(@name, "pass")]')
for passw in pass_elements:
if passw.is_displayed():
if passw.is_enabled():
passw.clear()
passw.send_keys(password + Keys.RETURN) #Crashes here
time.sleep(4)
return
您选择的变量名很可能会让您用内部循环破坏外部循环。
关于Python Selenium is_displayed() 返回 true 并且仍然引发 ElementNotVisible 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17432638/