2016-06-22 60 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