Как избавиться от конкретных исключений в селене? - PullRequest
0 голосов
/ 01 февраля 2012

Я должен использовать селен для своего проекта. Когда я использую селен, я даю на каждом шаге, как это

   time.sleep(6)

Я даю достаточный интервал для загрузки конкретной страницы, но все же в какой-то момент я сталкиваюсь с приведенной ниже ошибкой. В основном я получаю исключения как

Обычные исключения:

   Exception: Message: u'Unable to locate element:   {"method":"xpath","selector":"//textarea[@style=\\"overflow-y: hidden; height: 50px; width:  300px;\\"]"}' ; Stacktrace: Method WebDriverError threw an error in    file:///tmp/tmpBxGp2P/extensions/fxdriver@googlecode.com/resource/modules/atoms.js 
   Traceback (most recent call last):
    File "crawl_optimize.py", line 206, in main
     word_query = browser.find_element_by_xpath('//textarea[@style="overflow-y: hidden; height: 50px; width: 300px;"]')
    File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 210, in find_element_by_xpath
     return self.find_element(by=By.XPATH, value=xpath)
    File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 643, in find_element
    {'using': by, 'value': value})['value']
   File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 153, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/errorhandler.py", l     ine 147, in check_response
     raise exception_class(message, screen, stacktrace)

Я также получаю Нет такой ошибки реализации из-за WebDriverWait (). To ():

    NoSuchElementException: Message: u'Unable to locate element: {  "method":"xpath","selector":"//textarea[@style=\\"overflow-y: hidden; height: 50px; width: 300px;\\"]"}' ; Stacktrace: Method WebDriverError threw an error in   file:///tmp/tmpBxGp2P/extensions/fxdriver@googlecode.com/resource/modules/atoms.js 
  keyword : balance transfer ad pos : 2
  Exception: Message: None 
  Traceback (most recent call last):
    File "crawl_optimize.py", line 228, in main
     start_cpc,end_cpc = set_initial_cpc(initial_max_cpc,ad_position)
    File "crawl_optimize.py", line 95, in set_initial_cpc
    ep = crawl_position(cost)
   File "crawl_optimize.py", line 82, in crawl_position
    WebDriverWait(browser, 10).until(lambda driver :   driver.find_element_by_link_text(word.lower()))
   File "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/support/wait.py", line 55, in until
    raise TimeoutException()
    TimeoutException: Message: None 

Как избавиться от таких исключений?

1 Ответ

0 голосов
/ 03 февраля 2012

Может быть 2 вещи.

  1. Ваш элемент не завершил загрузку в течение выделенных 6 секунд
  2. Ваш указатель поврежден.Это выглядит подозрительно ...

    {"method": "xpath", "selector": "// textarea [@style = \" overflow-y: hidden;высота: 50 пикселей;width: 300px; \ "]"} '

Можете ли вы проверить, что локатор возвращает то, что вы ожидаете, используя FireFinder или аналогичный?

Если локатор в порядке, выможно попробовать использовать WebDriverWait & ExpectedCondition, чтобы убедиться, что страница закончила загрузку, а не играть в азартные игры, которые ваша страница всегда будет загружать в течение 6 с

...