2015-09-16 7 views
2

Я использую питон селен WebDriver в нашей инфраструктуре, в конце мы видим ошибки, как показано нижеPython Селен WebDriver бросает атрибут ошибки

(<type 'exceptions.AttributeError'>, 
AttributeError("'unicode' object has no attribute 'text'",) 
,<traceback  object at 0x00000000037D8D48>) 

А также мы видим эту ошибку в нашем продукте, который имеет Юникод charecters в them.Doesnt случается всегда случается раз в 15 раз.

StackTrace:

self.compare_units_test('Singapore') 
    line 391, in compare_units_test 
    self.assertTrue(home_page.is_loaded(), Errors.HOMEPAGE_LOGO_ERROR) 
    File "", line 32, in is_loaded 
    "Logo did not load results in 10 seconds") 
    File "\venv\lib\site-packages\pscore\core\support\ps_wait.py", line 20,in  until_visible 
    self._wait_until_visible(locator, timeout, message, True) 
    File "venv\lib\site-packages\pscore\core\support\ps_wait.py", line 15, in _wait_until_visible 
    wait.until(EC.visibility_of_element_located(locator), message=message) 
    File "\venv\lib\site-packages\selenium\webdriver\support\wait.py", line 66, in until 
    value = method(self._driver) 
    File "\venv\lib\site- packages\selenium\webdriver\support\expected_conditions.py", line 72, in __call__ 
    return _element_if_visible(_find_element(driver, self.locator)) 
    File \venv\lib\site- packages\selenium\webdriver\support\expected_conditions.py", line 90, in _element_if_visible 
    return element if element.is_displayed() else False 
    AttributeError: 'unicode' object has no attribute 'is_displayed' 

    2015-09-10 15:56:36 - INFO wd_testcase.py:111 in run : Test Runner: Tearing down test: test_compare_units (tests.test.TestFlightsSearch) 
2015-09-10 15:56:36 - INFO wd_testcase.py:48 in tearDown : Test Runner: Attempting to teardown. 
2015-09-10 15:56:36 - ERROR wd_testcase.py:125 in run : Traceback (most recent call last): 
    File \venv\lib\site-packages\pscore\core\wd_testcase.py", line 112, in run 
    self.tearDown() 
    File "\venv\lib\site-packages\pscore\core\wd_testcase.py", line 49, in tearDown 
    WebDriverFinalizer.finalize(self.driver, self.has_failed(), self.logger, self.test_context) 
    File "\venv\lib\site-packages\pscore\core\finalizers.py", line 28, in finalize 
    WebDriverFinalizer.finalize_skygrid(driver, test_failed, test_context) File "\lib\site-packages\pscore\core\finalizers.py", line 152, in finalize_skygrid 
    WebDriverFinalizer.finalise_skygrid_driver_failure(driver, test_context) 
    File "\venv\lib\site-packages\pscore\core\finalizers.py", line 168, in finalise_skygrid_driver_failure 
    final_url = driver.current_url 
     File "venv\lib\site- packages\selenium\webdriver\support\event_firing_webdriver.py", line 201, in __getattr__ 
    raise AttributeError(name)AttributeError: current_url 

Мы используем 2,45 версию селена и 2.7.7 версии питона.

Когда я копал в исходный код WebDriver нашел

try: 
str = basestring 
except NameError: 
pass 

, который непосредственно касается проблемы юникода, которые WebDriver бегала в. Любые идеи, что может быть причиной этого? С благодарностью была бы благодарна

+0

Какой код вы выполняете? На какой строке в вашем коде это не удается? – alecxe

+0

В основном, когда я пытаюсь найти что-то, используя 'XPATH' self.driver.find_element (By.XPATH," (// div [@ class = 'browse-data- entry']/h3) [{}] ". Format (index)). text – sri85

+0

Это не всегда сбой, сбой прерывается, что делает отладку болезненной, – sri85

ответ

0

Обнаружили причину проблемы. Похоже, что один из тестов породил новое окно браузера, а последующие тесты использовали диалоговое окно вместо окна браузера для выполнения селеновых команд. В какой-то момент один из тестов выполнил driver.quit, и когда последующие тесты попытались получить доступ к driver.something, они потерпели неудачу, так как драйвер уже был убит.

Смежные вопросы