2016-06-22 62 views
0

我的selenium python代码无法找到网页中的链接。我的硒python代码无法找到网页中的链接

我有两个涉及到下面的代码问题 -

  1. 我甚至不能登录到网页,如果我不提在self.base_urllogin:password(请参阅管理:管理员)。

    要注意的是,这个网页会弹出一个用户名和密码的弹出窗口。如上所述,我只能登录它。

    有没有一种方法,我不需要在self.base_url中提及用户名和密码?

  2. 当我设法登录到网页后,我无法点击网页上的任何链接。请参阅该我得到 C:\Python27>python.exe test2.py

ERROR: test_2 (__main__.Test2)

Traceback (most recent call last): 
    File "test2.py", line 22, in test_2 
driver.find_element_by_link_text("Devices").click() 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 282, in find_element_by_link_text 
return self.find_element(by=By.LINK_TEXT, value=link_text) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 712, in find_element 
{'using': by, 'value': value})['value'] 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 201, in execute 
self.error_handler.check_response(response) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response 
raise exception_class(message, screen, stacktrace) 
NoSuchElementException: Message: Unable to locate element: {"method":"link text","selector":"Devices"} 
Stacktrace: 
at FirefoxDriver.prototype.findElementInternal_ (file:///c:/users/saurabht/appdata/local/temp/tmpmvm1dg/extensions/[email protected]/components/driver-component.js:10723) 
at fxdriver.Timer.prototype.setTimeout/<.notify (file:///c:/users/saurabht/appdata/local/temp/tmpmvm1dg/extensions/[email protected]/components/driver-component.js:623) 

---------------------------------------------------------------------- 
Ran 1 test in 47.509s 

FAILED (errors=1) 

----------------------------- 

硒脚本错误;

# -*- coding: utf-8 -*- 
from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support.ui import Select 
from selenium.common.exceptions import NoSuchElementException 
from selenium.common.exceptions import NoAlertPresentException 
import unittest, time, re 

class Test2(unittest.TestCase): 
    def setUp(self): 
     self.driver = webdriver.Firefox() 
     self.driver.implicitly_wait(30) 
     self.base_url = "http://admin:[email protected]/acs/" 
     self.verificationErrors = [] 
     self.accept_next_alert = True 

    def test_2(self): 
     driver = self.driver 
     driver.get(self.base_url + "/") 
     time.sleep(15) 
     driver.find_element_by_link_text("Devices").click() 
     time.sleep(5) 
     driver.find_element_by_link_text("364114").click() 


    def is_element_present(self, how, what): 
     try: self.driver.find_element(by=how, value=what) 
     except NoSuchElementException as e: return False 
     return True 

    def is_alert_present(self): 
     try: self.driver.switch_to_alert() 
     except NoAlertPresentException as e: return False 
     return True 

    def close_alert_and_get_its_text(self): 
     try: 
      alert = self.driver.switch_to_alert() 
      alert_text = alert.text 
      if self.accept_next_alert: 
       alert.accept() 
      else: 
       alert.dismiss() 
      return alert_text 
     finally: self.accept_next_alert = True 

    def tearDown(self): 
     self.driver.quit() 
     self.assertEqual([], self.verificationErrors) 

if __name__ == "__main__": 
    unittest.main(exit=False) 
+0

更新了格式,以便更容易阅读。 –

回答

0

如果说网页在抛出弹出,如果弹出基于Web的,那么你很可能需要在窗口之间切换。这很可能是焦点不在主网页上,这就是您无法在其中找到任何元素的原因。请看看如何在窗口here之间切换。希望这可以帮助。

+0

我曾尝试切换窗口也尝试切换帧,但没有成功。但是,这是我已经处理的问题 - self.base_url =“http:// admin:[email protected]/acs/”。我现在主要关心的是我在登录后,在网页上找不到任何元素。 – Monu