сохранение результата после выполнения JavaScript с селеном в Python

голоса
1

Я пытаюсь выполнить JavaScript функции внутри тегов привязки с селеном и пытаюсь сохранить этот результат где-то

HTML - код :

<td>
<td>
  <ul class=compare>
    <li class=floatRight dividLineLeft category_page_navigation>
       <div class=page_navigation>
           <span id=ctl00_ctl00_ContentPlaceHolder1_ItemListPlaceHolder_pager1>
               <a style=width: 22px; height: 22px; disabled=disabled>
               <a style=width: 22px; height: 22px; href=javascript:__doPostBack('ctl00$ctl00$ContentPlaceHolder1$ItemListPlaceHolder$pager1$ctl00$ctl01','')>
           </span>
       </div>
    </li>
  </ul>
</td>

Ниже мой код

from selenium import webdriver
driver = webdriver.Chrome('/usr/bin/chromedriver')
driver.get(http://www.e3050.com/Items.aspx?cat=SON);
anchor_tags = driver.find_element_by_xpath(//div[@class='page_navigation']/span[@id='ctl00_ctl00_ContentPlaceHolder1_ItemListPlaceHolder_pager1'])
anchor_tags_res = anchor_tags.find_elements_by_tag_name(a)
for anchor_tag in anchor_tags_res:
      href=[]
      href.append(anchor_tag.get_attribute(href))
      for i in href:
          element = driver.execute_script(i)
          print element

Здесь я могу получить HREF из тегов якорь, но когда я пытаюсь выполнить, как показано выше, он показывает ошибку ниже. И когда я использовал щелчок () функции, как

for anchor_tag in anchor_tags:
      anchor_tag.click()

Javascript выполняется хорошо, но я хочу, чтобы сохранить результат выполнения, так как в выше яваскрипте функции коды не что иное, который генерирует пагинацию

Результат:

---------------------------------------------------------------------------
WebDriverException                        Traceback (most recent call last)

/home/local/<ipython console> in <module>()

/usr/lib/python2.7/site-packages/selenium-2.21.3-py2.7.egg/selenium/webdriver/remote/webdriver.pyc in execute_script(self, script, *args)
    383         converted_args = list(args)
    384         return self.execute(Command.EXECUTE_SCRIPT,
--> 385             {'script': script, 'args':converted_args})['value']
    386 
    387     def execute_async_script(self, script, *args):

/usr/lib/python2.7/site-packages/selenium-2.21.3-py2.7.egg/selenium/webdriver/remote/webdriver.pyc in execute(self, driver_command, params)
    151         response = self.command_executor.execute(driver_command, params)
    152         if response:
--> 153             self.error_handler.check_response(response)
    154             response['value'] = self._unwrap_value(
    155                 response.get('value', None))

/usr/lib/python2.7/site-packages/selenium-2.21.3-py2.7.egg/selenium/webdriver/remote/errorhandler.pyc in check_response(self, response)
    123             if exception_class == ErrorInResponseException:
    124                 raise exception_class(response, value)
--> 125             raise exception_class(value)
    126         message = ''
    127         if 'message' in value:

WebDriverException: Message: '{sessionId:ed4b6f549a9902254bc49399cddbe79a,status:400,value:{message:No script specified}}'

Так как сохранить результат после выполнения JavaScript селена

Заранее спасибо........................

Отредактированный код :

from selenium import webdriver
driver = webdriver.Chrome('/usr/bin/chromedriver')
driver.get(http://www.e3050.com/Items.aspx?cat=SON);
anchor_tags = driver.find_element_by_xpath(//div[@class='page_navigation']/span[@id='ctl00_ctl00_ContentPlaceHolder1_ItemListPlaceHolder_pager1'])
all_options = anchor_tags.find_elements_by_tag_name(a)
hrefs = all_options[1].get_attribute(href)
res = hrefs.encode('utf-8')
element = driver.execute_script('%s'%res)
WebDriverWait(driver, timeout=10).until(lambda x: x.find_element_by_id('ctl00_ctl00_ContentPlaceHolder1_ItemListPlaceHolder_itemslv_ctrl0_Counterlbl'))
print element,Here should be the result

Я редактировал код и я был запустить этот код из файла через терминал, я не получаю никаких ошибок, но результат нет. На самом деле я хочу, чтобы сохранить результат после Javascript execution.Please дайте мне знать, почему результат пуст ..............

Заранее спасибо................

Задан 27/06/2012 в 09:08
источник пользователем
На других языках...                            


1 ответов

голоса
2

Для того, чтобы получить результат после клика, просто вызовите соответствующий find_element_by*метод. Вы , возможно , потребуется selenium.webdriver.support.ui.WebDriverWaitждать результатов загрузки.

Ответил 27/06/2012 в 11:22
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more