Exemplo n.º 1
0
	def screeninfo(self):
		"""Captures the Screenshot and displays it """
		Device().capture_screenshot()
		resolution = (self.width, self.height)
		droid = AQMdroid('image.png', resolution, self.filename)
		
		try:
			droid.getorigin()
		except Exception as e:
			ScriptGen(self.filename).log_checker(self.log_handler)
			ScriptGen(self.filename).log_checker(self.generate_log_file)
			print "\nExit Point Triggered."
			sys.exit()
                            def input(args=None):
                                self.user_val = e1.get()
                                window.destroy()

                                if self.resource_id not in ignore_list:
                                    ScriptGen(filename).script(
                                        "vc.findViewByIdOrRaise('{id}').setText('{text}')\n"
                                        .format(id=self.resource_id,
                                                text=self.user_val))
                                    ScriptGen(filename).log(
                                        "#LOG({classname}): Cleared and Typed : '{text}' on id : '{id}'\n"
                                        .format(classname=self.classname,
                                                text=self.user_val,
                                                id=self.resource_id))

                                elif self.unique_id not in ignore_list:
                                    ScriptGen(filename).script(
                                        "vc.findViewByIdOrRaise('{id}').setText('{text}')\n"
                                        .format(id=self.unique_id,
                                                text=self.user_val))
                                    ScriptGen(filename).log(
                                        "#LOG({classname}): Cleared and Typed : '{text}'\n"
                                        .format(classname=self.classname,
                                                text=self.user_val))

                                elif UIDump.check_text[
                                        count] not in ignore_list:
                                    ScriptGen(filename).script(
                                        "vc.findViewWithTextOrRaise('{id_text}').setText('{text}')\n"
                                        .format(
                                            id_text=UIDump.check_text[count],
                                            text=self.user_val))
                                    ScriptGen(filename).log(
                                        "#LOG({classname}): Cleared and Typed : '{text}' on Element with text : '{id_text}'\n"
                                        .format(
                                            classname=self.classname,
                                            id_text=UIDump.check_text[count],
                                            text=self.user_val))

                                else:
                                    ScriptGen(filename).script(
                                        "device.touchDip({X},{Y},0)\n".format(
                                            X=int(self.XY[0]),
                                            Y=int(self.XY[1])))
                                    ScriptGen(filename).log(
                                        "#LOG({classname}): Vulnerable/Unstable field on co-ordinates ({X},{Y})\n"
                                        .format(classname="Vulnerable",
                                                X=int(self.XY[0]),
                                                Y=int(self.XY[1])))
    def bounds_Compare(self, bounds, filename):
        """ Compares the bounds with Master XY and generates the Script fro given Element. """

        # removed "android.widget.Spinner", "android.widget.ExpandableListView" from reqlist, it's interfering with the view.

        reqlist = [
            "android.widget.EditText", "android.widget.Button",
            "android.widget.CheckBox", "android.widget.RadioButton",
            "android.widget.TextView", "android.widget.RelativeLayout",
            "android.widget.ImageView", "android.app.Dialogue",
            "android.view.View"
        ]

        ignore_list = [None, '', 'None']

        collection = []
        logs = []

        count = 0
        len_bounds = len(bounds)

        for i in bounds:
            print '\n ---------------------------------------------- \n'
            # print "for every bound block" ----> DEBUG < -----
            if int(bounds[count][2]) <= self.XY[1] <= int(bounds[count][3]):
                if int(bounds[count][0]) <= self.XY[0] <= int(
                        bounds[count][1]):

                    # print "current X_Y : ", str(self.XY)
                    # print "current bounds : ", str(UIDump.bounds[count])
                    # print "unique id : ", str(UIDump.check_unique_id[count])
                    # print "resource id : ", str(UIDump.check_resource_id[count])
                    # print "current text : ", str(UIDump.check_text[count])

                    # print "in range block" ----> DEBUG < -----

                    if UIDump.elements[count] in reqlist:
                        # print "in reqlist block" ----> DEBUG < -----

                        if UIDump.elements[count] == reqlist[0]:
                            # print "EditText block" ----> DEBUG < -----

                            window = Tkinter.Tk()

                            window.resizable(width=False, height=False)
                            window.geometry("200x80")

                            l1 = Label(window,
                                       width=30,
                                       text="Enter Text to Type: ")
                            l1.pack()

                            self.entry_id = StringVar()
                            e1 = Entry(window,
                                       width=30,
                                       textvariable=self.entry_id)
                            e1.pack()

                            def input(args=None):
                                self.user_val = e1.get()
                                window.destroy()

                                if self.resource_id not in ignore_list:
                                    ScriptGen(filename).script(
                                        "vc.findViewByIdOrRaise('{id}').setText('{text}')\n"
                                        .format(id=self.resource_id,
                                                text=self.user_val))
                                    ScriptGen(filename).log(
                                        "#LOG({classname}): Cleared and Typed : '{text}' on id : '{id}'\n"
                                        .format(classname=self.classname,
                                                text=self.user_val,
                                                id=self.resource_id))

                                elif self.unique_id not in ignore_list:
                                    ScriptGen(filename).script(
                                        "vc.findViewByIdOrRaise('{id}').setText('{text}')\n"
                                        .format(id=self.unique_id,
                                                text=self.user_val))
                                    ScriptGen(filename).log(
                                        "#LOG({classname}): Cleared and Typed : '{text}'\n"
                                        .format(classname=self.classname,
                                                text=self.user_val))

                                elif UIDump.check_text[
                                        count] not in ignore_list:
                                    ScriptGen(filename).script(
                                        "vc.findViewWithTextOrRaise('{id_text}').setText('{text}')\n"
                                        .format(
                                            id_text=UIDump.check_text[count],
                                            text=self.user_val))
                                    ScriptGen(filename).log(
                                        "#LOG({classname}): Cleared and Typed : '{text}' on Element with text : '{id_text}'\n"
                                        .format(
                                            classname=self.classname,
                                            id_text=UIDump.check_text[count],
                                            text=self.user_val))

                                else:
                                    ScriptGen(filename).script(
                                        "device.touchDip({X},{Y},0)\n".format(
                                            X=int(self.XY[0]),
                                            Y=int(self.XY[1])))
                                    ScriptGen(filename).log(
                                        "#LOG({classname}): Vulnerable/Unstable field on co-ordinates ({X},{Y})\n"
                                        .format(classname="Vulnerable",
                                                X=int(self.XY[0]),
                                                Y=int(self.XY[1])))

                            def framedestroy():
                                window.destroy()

                            self.unique_id = UIDump.check_unique_id[count]
                            self.resource_id = UIDump.check_resource_id[count]
                            self.classname = UIDump.check_className[count]

                            b1 = Button(window,
                                        text="Ok",
                                        width=10,
                                        command=input)
                            b1.pack(side=LEFT)
                            b1.place(x=10, y=50)

                            b2 = Button(window,
                                        text="Cancel",
                                        width=10,
                                        command=framedestroy)
                            b2.pack(side=RIGHT)
                            b2.place(x=110, y=50)

                            window.bind('<Return>', input)

                            window.mainloop()

                            self.flag = 'red'
                            break

                        elif UIDump.elements[count] in reqlist[1:4]:
                            # print "Button block" ----> DEBUG < -----

                            self.unique_id = UIDump.check_unique_id[count]
                            self.resource_id = UIDump.check_resource_id[count]
                            self.classname = UIDump.check_className[count]

                            if UIDump.check_text[count] not in ignore_list:
                                log_ = "#LOG({classname}): Clicked on element with text : '{id}'\n".format(
                                    classname=self.classname,
                                    id=UIDump.check_text[count])
                                line = "vc.findViewWithTextOrRaise('{id}').touch()\n\tvc.sleep(3)\n".format(
                                    id=UIDump.check_text[count])
                                if line not in collection:
                                    collection.append(line)
                                    logs.append(log_)
                                break

                            elif self.resource_id not in ignore_list:
                                log_ = "#LOG({classname}): Clicked on : '{id}'\n".format(
                                    classname=self.classname,
                                    id=self.resource_id)
                                line = "vc.findViewByIdOrRaise('{id}').touch()\n\tvc.sleep(3)\n".format(
                                    id=self.resource_id)
                                if line not in collection:
                                    collection.append(line)
                                    logs.append(log_)
                                break

                            elif self.unique_id not in ignore_list:
                                log_ = "#LOG({classname}): Clicked on : '{id}'\n".format(
                                    classname=self.classname,
                                    id=self.unique_id)
                                line = "vc.findViewByIdOrRaise('{id_text}').touch()\n\tvc.sleep(3)\n".format(
                                    id_text=self.unique_id)
                                if line not in collection:
                                    collection.append(line)
                                    logs.append(log_)
                                break

                            else:
                                log_ = "#LOG({classname}): Vulnerable/Unstable field on co-ordinates ({X},{Y})\n".format(
                                    classname=self.classname,
                                    X=int(self.XY[0]),
                                    Y=int(self.XY[1]))
                                line = "device.touchDip({X},{Y},0)\n\tvc.sleep(3)\n".format(
                                    X=int(self.XY[0]), Y=int(self.XY[1]))
                                if line not in collection:
                                    collection.append(line)
                                    logs.append(log_)
                                break

                        elif UIDump.elements[count] in reqlist[4:]:
                            # print "remaining views block" ----> DEBUG < -----

                            self.unique_id = UIDump.check_unique_id[count]
                            self.resource_id = UIDump.check_resource_id[count]
                            self.classname = UIDump.check_className[count]

                            if UIDump.check_text[count] not in ignore_list:
                                log_ = "#LOG({classname}): Clicked on element with Text : '{id}'\n".format(
                                    classname=self.classname,
                                    id=UIDump.check_text[count])
                                line = "vc.findViewWithTextOrRaise('{id}').touch()\n".format(
                                    id=UIDump.check_text[count])
                                if line not in collection:
                                    collection.append(line)
                                    logs.append(log_)

                            elif self.resource_id not in ignore_list:
                                log_ = "#LOG({classname}): Clicked on : '{id}'\n".format(
                                    classname=self.classname,
                                    id=self.resource_id)
                                line = "vc.findViewByIdOrRaise('{id}').touch()\n".format(
                                    id=self.resource_id)
                                if line not in collection:
                                    collection.append(line)
                                    logs.append(log_)

                            elif self.unique_id not in ignore_list:
                                log_ = "#LOG({classname}): Clicked on : '{id}'\n".format(
                                    classname=self.classname,
                                    id=self.unique_id)
                                line = "vc.findViewByIdOrRaise('{id_text}').touch()\n".format(
                                    id_text=self.unique_id)
                                if line not in collection:
                                    collection.append(line)
                                    logs.append(log_)

                            else:
                                log_ = "#LOG({classname}): Vulnerable/Unstable field on co-ordinates ({X},{Y})\n".format(
                                    classname='Vulnerable',
                                    X=int(self.XY[0]),
                                    Y=int(self.XY[1]))
                                line = "device.touchDip({X},{Y},0)\n\tvc.sleep(3)\n".format(
                                    X=int(self.XY[0]), Y=int(self.XY[1]))
                                if line not in collection:
                                    collection.append(line)
                                    logs.append(log_)

                        else:
                            # print "not in imp view block" ----> DEBUG < -----
                            log_ = "#LOG({classname}): Vulnerable/Unstable field on co-ordinates ({X},{Y})\n".format(
                                classname='Vulnerable',
                                X=int(self.XY[0]),
                                Y=int(self.XY[1]))
                            line = "device.touchDip({X},{Y},0)\n\tvc.sleep(3)\n".format(
                                X=int(self.XY[0]), Y=int(self.XY[1]))
                            if line not in collection:
                                collection.append(line)
                                logs.append(log_)
                            break

                    elif UIDump.elements[count] in [
                            "android.widget.FrameLayout"
                    ]:
                        # print "FrameLayout block" ----> DEBUG < -----
                        log_ = "#LOG({classname}): Vulnerable/Unstable field on co-ordinates ({X},{Y})\n".format(
                            classname='Vulnerable',
                            X=int(self.XY[0]),
                            Y=int(self.XY[1]))
                        line = "device.touchDip({X},{Y},0)\n\tvc.sleep(3)\n".format(
                            X=int(self.XY[0]), Y=int(self.XY[1]))
                        if line not in collection:
                            collection.append(line)
                            logs.append(log_)

            count += 1

        else:
            # print "nothing matches block" ----> DEBUG < -----
            log_ = "#LOG({classname}): Vulnerable/Unstable field on co-ordinates ({X},{Y})\n".format(
                classname='Vulnerable', X=int(self.XY[0]), Y=int(self.XY[1]))
            line = "device.touchDip({X},{Y},0)\n\tvc.sleep(3)\n".format(
                X=int(self.XY[0]), Y=int(self.XY[1]))
            if line not in collection:
                collection.append(line)
                logs.append(log_)

        print collection
        print logs
        # ----> DEBUG < -----

        if self.flag == 'green':
            ScriptGen(filename).script(collection[-1])
            ScriptGen(filename).log(logs[-1])
        else:
            pass
Exemplo n.º 4
0
	def execution_func(self, args = None):
		execution_value=e1_execution.get()
		ScriptGen(self.filename).log_checker(self.log_handler)
		ScriptGen(self.filename).log("#STEP: {name}\n".format(name=execution_value))
		window_1.destroy()
Exemplo n.º 5
0
	def scenario_func(self, args = None):
		scenario_value=e1_scenario.get()
		ScriptGen(self.filename).log("#SCENARIO: {name}\n".format(name=scenario_value))
		b1['state'] = 'disabled'
		window_.destroy()