Converting getCSS Count Code from java to python

SMERSH009 smersh009x at gmail.com
Fri Feb 18 02:09:22 EST 2011


On Feb 17, 10:25 pm, SMERSH009 <smersh0... at gmail.com> wrote:
> On Feb 17, 9:51 pm, Stefan Behnel <stefan... at behnel.de> wrote:
>
>
>
> > SMERSH009, 17.02.2011 22:46:
>
> > > am still stuck with the following error when I try to
> > > print self.count_css_matches('css=[id="listGuests"]')
> > > I've also included the Selenium code below. Any further help would be
> > > appreciated.
>
> > > Traceback (most recent call last):
> > >    File "D:\Temp\1TestingApps\Selenium\Scripts\SevPractice.py", line
> > > 27, in test_untitled
> > >      print self.count_css_matches('css=[id="listGuests"]')
> > >    File "D:\Temp\1TestingApps\Selenium\Scripts\SevPractice.py", line
> > > 17, in count_css_matches
> > >      return int(selenium.get_eval(self, java_script_code))
> > > TypeError: unbound method get_eval() must be called with selenium
> > > instance as first argument (got Untitled instance instead)
>
> > > ----------------------------------------------------------------------
>
> > > from selenium import selenium
> > > import unittest, time
> > > from datetime import datetime
>
> > > class Untitled(unittest.TestCase):
> > >      def count_css_matches(self, css_locator):
> > >          java_script_code = '''
> > >              var cssMatches = eval_css("%s", window.document);
> > >              cssMatches.length;''' % css_locator
> > >          return int(selenium.get_eval(self, java_script_code))
> > >          #return int(selenium.getEval(java_script_code))
>
> > You want to use "self.selenium" here, not "selenium".
>
> > Stefan
>
> > >      def setUp(self):
> > >          self.verificationErrors = []
> > >          self.selenium = selenium("localhost", 4445, "*chrome", "http://
> > >www.guestlistnation.com/")
> > >          self.selenium.start()
>
> > >      def test_untitled(self):
> > >          sel = self.selenium
> > >          sel.window_maximize()
> > >          sel.open("/Events.aspx?Location=SAN FRANCISCO")
>
> > > sel.click("css=[id='EventDates_ctl00_NestedEvents_ctl01_btnDetails']")
> > >          sel.wait_for_page_to_load("30000")
>
> > >          print self.count_css_matches('css=[id="listGuests"]')
>
> > > if __name__ == "__main__":
> > >      unittest.main()
>
> Wow-- you guys rock --big time! :))
> Here is the final code with a working examples:
>
> from selenium import selenium
> import unittest, time
> from datetime import datetime
>
> class Untitled(unittest.TestCase):
>     def count_css_matches(self, css_locator):
>         java_script_code = '''
>             var cssMatches = eval_css("%s", window.document);
>             cssMatches.length;''' % css_locator
>         return self.selenium.get_eval(java_script_code)
>
>     def setUp(self):
>         self.verificationErrors = []
>         self.selenium = selenium("localhost", 4445, "*chrome", "http://www.guestlistnation.com/")
>         self.selenium.start()
>
>     def test_untitled(self):
>         sel = self.selenium
>         sel.window_maximize()
>         sel.open("/Events.aspx?Location=SAN FRANCISCO")
>
> sel.click("css=[id='EventDates_ctl00_NestedEvents_ctl01_btnDetails']")
>         sel.wait_for_page_to_load("30000")
>
>         print self.count_css_matches("[id='listGuests'] > option") #
> prints number of options in dropdown with 'id=listGuests'
>         print self.count_css_matches("*") #prints all on page
> if __name__ == "__main__":
>     unittest.main()

oops, forgot to put back the int conversion!

    def count_css_matches(self, css_locator):
        java_script_code = '''
            var cssMatches = eval_css("%s", window.document);
            cssMatches.length;''' % css_locator
        return int(self.selenium.get_eval(java_script_code))



More information about the Python-list mailing list