【问题标题】:python selenium element not visible exceptionpython selenium 元素不可见异常
【发布时间】:2017-07-11 19:41:39
【问题描述】:
import webbrowser
from selenium import webdriver

browser = webdriver.Chrome()
browser.maximize_window()
browser.get('https://www.suntrust.com/')
browser.implicitly_wait(15)
elem = browser.find_element_by_css_selector('input#sign-on-3A69E29D-79E0-
                                           403E-9352-5261239ADD89-user')
elem.click().send_keys('your-username')

元素不可见异常错误信息:

我正在尝试自动登录登录名/密码字段,但我不断收到此错误消息。

我尝试过各种“find_element_by”定位器,但推荐使用这个,所以我认为 css 选择器不是问题。我究竟做错了什么?

【问题讨论】:

  • 尝试:elem.send_keys('your_username')

标签: python selenium


【解决方案1】:

这通常是因为 dom 没有加载并且 Selenium 脚本试图找到该元素。确保该元素不在 Iframe 内。使用 selenium 显式等待元素加载,然后对该按钮执行操作。你必须在 python 中做这样的事情。下面的代码只是创建一个等待对象,然后等待元素加载并执行下一步

from selenium.webdriver.support.ui import WebDriverWait


    myElem = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.ID, 'IdOfMyElement')))
    print "Page is ready!"
except TimeoutException:
    print "Loading took too much time!"

【讨论】:

    【解决方案2】:

    这是您问题的答案:

    您构造的 css_selector 不是唯一的,并且与 HTML DOM 上的 2 个元素匹配。第一个匹配是不可见的,而第二个匹配是我们预期的元素。 Selenium 试图单击第一个元素。因此错误。这是您自己的代码,修改后的css_selector 对我来说效果很好:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument("start-maximized")
    options.add_argument("disable-infobars")
    options.add_argument("--disable-extensions")
    browser = webdriver.Chrome(chrome_options=options, executable_path="C:\\Utility\\BrowserDrivers\\chromedriver.exe")
    browser.get('https://www.suntrust.com/')
    browser.implicitly_wait(15)
    elem = browser.find_element_by_css_selector('section[role="main"] input[id="sign-on-3A69E29D-79E0-403E-9352-5261239ADD89-user"]')
    elem.send_keys('your-username')
    

    如果这能回答您的问题,请告诉我。

    【讨论】:

    • 对我特别不起作用,但我的问题在其他地方得到了回答。感谢您的反馈。
    • @Newbbit 你能检查我更新的答案吗?它在我的最后工作。谢谢
    • 谢谢 :) 我只是像你一样的学习者,两个答案都是我的。谢谢
    猜你喜欢
    • 2015-05-03
    • 1970-01-01
    • 2019-07-07
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    相关资源
    最近更新 更多