Python Selenium is_displayed() 返回 true 并且仍然引发 ElementNotVisible 异常?

标签 python selenium

在调用任何元素的 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/

相关文章:

python - Selenium 网络驱动程序 Firefox 打开空白页

python xlib xgrabkey keyrelease 事件未触发

python - 如何将列表拆分为相等的子列表,最后一个子列表由列表的第一个可能元素组成

python - 如何读取首选项,通过 geckodriver 从 Selenium Firefox webdriver 获取配置文件设置的值?

python - selenium firefox webdriver 中的 HTML 未加载

python - Selenium - X 时间后刷新所有选项卡

java - 如何在 Selenium Java 代码中使用 By.parameter?

python - Python 中函数响应式编程的现状如何?

python - Seaborn FacetGrid PointPlot 添加 1 条网格线

python - 绕过pandas concat错误 "Reindexing only valid with uniquely valued Index objects"