Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用selenium执行javascript后存储结果_Javascript_Python_Selenium - Fatal编程技术网

在python中使用selenium执行javascript后存储结果

在python中使用selenium执行javascript后存储结果,javascript,python,selenium,Javascript,Python,Selenium,我正在尝试使用selenium在锚定标记内执行javascript函数,并尝试将结果存储到某个地方 HTML代码: <td> <td> <ul class="compare"> <li class="floatRight dividLineLeft category_page_navigation"> <div class="page_navigation"> <span id="c

我正在尝试使用selenium在锚定标记内执行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']")
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"
在这里,我可以从锚标签中获取href,但当我尝试执行上面所示的操作时,它会显示下面的错误。 当我使用click()函数时

for anchor_tag in anchor_tags:
      anchor_tag.click()
javascript执行得很好,但我想存储执行的结果,因为在上面的代码中,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执行后保存结果。请告诉我为什么结果为空


提前感谢………..

要在单击后获得结果,只需调用适当的
find\u element\u by*
方法。您可能需要
selenium.webdriver.support.ui.WebDriverWait
等待加载结果。

单击链接时,您在浏览器中看到了什么?你期望得到什么结果?例如,如果javascript更改了文档,则只需像往常一样查询DOM即可获得结果。我们可以通过firebug中查看javascript的方式获得结果,但我希望通过selenium获得结果,正如您在url“”上方看到的那样,我实际上想实现分页,但这是通过javascript函数完成的,因此,当我们动态地点击下一页时,数据会加载到页面上,而不会更改url,因此我想使用selenium并了解(捕获结果)当我们点击分页时会发生什么,我的意思是存储javascript功能的结果,可能是url或其他什么,如果我的解释有错误,请让我知道谢谢,这很有用,如果你不介意,请你在我上面编辑的代码中展示一下,打印结果“元素”,你能给我举个例子吗,这样会更有帮助。提前感谢@J.F.Sebastian:这有一些帮助,对不起,在上面提到的示例中,intesnion是保存javascript执行生成的url,但是在那里会打印整个页面源代码,页面源代码的url如何(我需要的正是)。在我的示例中,正如u所指出的,我能够执行javascript函数并将页面从1移动到2(尝试实现分页),这里我想找到第二个页面的url。我们如何才能做到这一点与上述example@shivakrishna:您在回答的注释中提到的URL是相同的(不会更改)。看起来“结果”是JavaScript改变了你已经在上面的页面,也就是说,它不返回任何URL。如果你不需要完整页面的源代码,那么你可以使用
find_element_by*()
来获取感兴趣的位。是的,你是对的,url不会动态地更改页面上的值,但是在分页的情况下如何解决这个问题,我的意思是,有没有办法在上述url中实现分页?
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"