使用Python Selenium对页面上的所有元素进行NoSuchElementException

时间:2018-05-24 09:33:03

标签: python selenium nosuchelementexception

设置向上

我尝试使用Python + Selenium登录website

加载网站的代码是,

browser = webdriver.Firefox(
    executable_path='/mypath/to/geckodriver')

url = 'https://secure6.e-boekhouden.nl/bh/'
browser.get(url)

问题

Selenium找不到包含帐户和密码字段的元素。

例如,对于字段' Gebruikersnaam',

browser.find_element_by_id('txtEmail')
browser.find_element_by_xpath('//*[@name="txtEmail"]')
browser.find_element_by_class_name('INPUTBOX')

全部给NoSuchElementException: Unable to locate element

更糟糕的是,Selenium无法在页面上找到body元素,

browser.find_element_by_xpath('/html/body')

给出NoSuchElementException: Unable to locate element: /html/body

我猜测页面上的内容要么阻止Selenium(可能是网址中的'secure6'),要么是用Selenium无法处理的语言/格式编写的。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

所有元素都在框架内。所以,它抛出No Such Element异常。请尝试在所有操作之前切换到框架。

browser = webdriver.Firefox(
    executable_path='/mypath/to/geckodriver')

url = 'https://secure6.e-boekhouden.nl/bh/'
browser.get(url)

browser.switch_to.frame(browser.find_element_by_id("mainframe"))

browser.find_element_by_id('txtEmail')
browser.find_element_by_xpath('//*[@name="txtEmail"]')
browser.find_element_by_class_name('INPUTBOX')