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

时间:2016-06-22 08:01:49

标签: python selenium-webdriver

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

我有两个与以下代码相关的问题 -

  1. 如果我在login:password中未提及self.base_url,我甚至无法登录该网页(请参阅admin:admin)。

    需要注意的是,此网页会弹出用户名和密码。我只能按照上面提到的那样登录。

    有没有办法我不需要在self.base_url中提及用户ID和密码?

  2. 我设法登录网页后,无法点击网页上的任何链接。请查看我收到的错误 C:\Python27>python.exe test2.py

  3. 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/fxdriver@googlecode.com/components/driver-component.js:10723)
    at fxdriver.Timer.prototype.setTimeout/<.notify (file:///c:/users/saurabht/appdata/local/temp/tmpmvm1dg/extensions/fxdriver@googlecode.com/components/driver-component.js:623)
    
    ----------------------------------------------------------------------
    Ran 1 test in 47.509s
    
    FAILED (errors=1)
    
    -----------------------------
    

    Selenium脚本;

    # -*- 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:admin@172.22.1.124/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)
    

1 个答案:

答案 0 :(得分:0)

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