2016-08-17 73 views
-2

这是我与硒写的方法登录到我的网页:NoSuchElementException异常:消息:没有这样的元素:找不到元素:{“方法”:“ID”,“选择”:“用户名”}

def login(self, username, password): 
    driver.switch_to.default_content() 
    driver.switch_to.frame("iframe") 
    driver.find_element_by_id("username").send_keys(username) 
    driver.find_element_by_id("password").send_keys(password) 
    driver.find_element_by_id("loginButton").click() 

下面是机器人框架的代码,我有:

*** Settings *** 
Library   CustomSelenium2Plus.py 

*** Test Cases *** 
SR Create New Service 
    Open Browser https://partner.sdg.msg.lab.t-mobile.com/tpim/ Chrome 
    ${webdriver}= Get webdriver instance 
    Set Driver ${webdriver} 
    Login usrnm pwd 
    ... 
    Delete Service 
    Close Browser 

CustomSelenium2Plus.py是一个自定义的库我写的子类RobotFramework的Selenium2Library并且是登录方法所在。当我第一次使用Login关键字进行调用时,该方法完全有效。然而,它抛出一个NoSuchElementException,当它被称为Delete Service关键字的函数内的第二次,看起来像这样:

def delete_service(self): 
    self.logout() 
    self.login("usrnm", "pwd") 
    ... 

我已经检查了框架是正确的。我也已经尝试让我的WebDriver等待iframe和用户名textarea的可见性,一个隐含的WebDriverWait和一个time.sleep(30)

编辑:HTML代码是不是我的,很丑陋,但这里有一个撷取画面

enter image description here

有技术上嵌套中的每个其他四个I帧,但调用driver.switch_to.frame("iframe")任何不止一次地抛出一个NoSuchFrameException

+0

如果您提供了相关的HTML,这可能会有所帮助,因此我们可以仔细检查并确保没有任何简单的事情被忽略。 – JeffC

+0

上面显示的登录方法在执行任何操作之前没有任何元素的等待,这可能是NoSuchElementException的原因,我猜测在登出之后,登录页面需要时间来加载元素 –

+0

@SatishGupta我没有包括这些代码行,但我已经尝试在我的登录功能等待。我在切换帧之前和之后加上time.sleep(30)(加上我提到的其他东西),以确保它。问题依然存在;第一次工作,而不是第二次。 –

回答

0

我会猜测重复几行driver.switch_to.frame("iframe")就行了。从技术上说,id在页面上不是唯一的,所以我会尝试使用索引。从你提供的HTML看起来,你想要的IFRAME是每一次的第一个。下面将有希望工作。

driver.switch_to.default_content() 
driver.switch_to.frame(0) 
driver.switch_to.frame(0) 
driver.switch_to.frame(0) 
driver.find_element_by_id("username").send_keys(username) 
driver.find_element_by_id("password").send_keys(password) 
driver.find_element_by_id("loginButton").click() 

第一行技术上是没有必要的,除非你是这一点,潜入一个IFRAME之前执行的代码,但我把它,因为你有它上面。

+0

第一次在一个,两个和三个驱动程序中抛出NoSuchFrameException .switch_to.frame(0)命令。 –

+0

Something not加起来...你能分享一个链接到页面吗? – JeffC

+0

https://partner.sdg.msg.lab.t-mobile.com/tpim/ –

相关问题