Сценарий Selenium не может найти функцию при открытии новой страницы - PullRequest
2 голосов
/ 12 июля 2011

У меня проблема с моим скриптом selenium-python при открытии другой страницы в отдельной функции.

В функции test2_points() selenium не удается найти functionselect и Products_4.

Это мой сценарий:

from selenium import selenium
import unittest, time, re
import socket
import sys

class discount_reward(unittest.TestCase):
    def setUp(self):
         print "setUp invoked"
         self.port               = "4444"
         self.ip_address         = "localhost"
         self.browser            = "*chrome"#firefox
         self.base_url           = "http://128.0.0.1:1062"
         self.browser_title      = "Hammer"
         self.verificationErrors = []

         try:
            print "starting selenium with the following parameters:"
            print "ip address:  %s\nport:  %s\nbrowser:  %s\nbase_url:  %s" %(self.ip_address, self.port, self.browser, self.base_url)
            self.selenium = selenium(self.ip_address, self.port, self.browser, self.base_url)
            self.selenium.start()

         except socket.error, error:
            print "\nSocket Exception: %s" %(error)
            print "\nCould not connect to %s:%s with browser %s" %(self.base_url, self.port, self.browser)
            sys.exit(1)

    def test1_discount_reward(self):
        sel = self.selenium
        sel.open("/Hammer/offer-rew-discount.aspx?")
        sel.select("functionselect", "label=Products_2")
        sel.click("select1")
    def test2_points_reward(self):
        sel = self.selenium
        sel.open("/Hammer/offer-rew-points.aspx?")
        sel.select("functionselect", "label=Products_4")
        sel.click("select1")

    def tearDown(self):
        self.selenium.stop()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()

Может кто-нибудь сказать мне, что не так?

1 Ответ

1 голос
/ 15 июля 2011

Вы почти наверняка выполните это sel.select() до завершения загрузки страницы.Каждый раз, когда вы выполняете действие, которое вызывает переход страницы ( например , open(), click() для ссылки или кнопки), вы должны следовать за ним с wait_for_page_to_load(timeout_in_milliseconds).Ожидание закончится, когда страница будет полностью загружена в браузер, или истечет время ожидания (что, очевидно, является ошибкой).

...