def test_image_match(): class MockDevice(): def __init__(self): self.x = None self.y = None def click(self, x, y): self.x = x self.y = y def screenshot(self, *args, **kwargs): return cv2.imread(TESTDIR + "/screenshot.jpg") d = MockDevice() ix = u2image.ImageX(d) template = Image.open(TESTDIR + "/template.jpg") res = ix.match(template) x, y = res['point'] assert (x, y) == (409, 659), "Match position is wrong" ix.click(template) assert d.x == 409 assert d.y == 659 if False: # show position pim = Image.open(TESTDIR + "/screenshot.jpg") nim = u2image.draw_point(pim, x, y) nim.show()
def main(): d = u2.connect("30.10.93.26") # d.widget.click("00013#推荐歌单第一首") d.widget.exists("lo/00019#播放全部") return d.widget.click("00019#播放全部") # d.widget.click("00018#播放暂停") d.widget.click("00018#播放暂停") d.widget.click("00021#转到上一层级") return d.widget.click("每日推荐") widget_id = "00009#上新" widget_id = "00011#每日推荐" widget_id = "00014#立减20" result = d.widget.match(widget_id) # e = Widget(d) # result = e.match("00003") # print(result) # # e.match("00002") # # result = e.match("00007") wsize = d.window_size() from lxml import etree result = d.widget.match(widget_id) pprint(result.node.attrib) pprint(result.score) pprint(result.detail) show_click_position(d, result.point) return root = etree.parse( '/Users/shengxiang/Projects/weditor/widgets/00010/hierarchy.xml') nodes = root.xpath('/hierarchy/node/node/node/node') a, b = nodes[0], nodes[1] result = d.widget.hybird_compare_node(a, b, wsize, wsize) pprint(result) score = d.widget._hybird_result_to_score(result) pprint(score) return score = d.widget._compare_node(a, b, wsize, wsize) print(score) a, b = nodes[0].getparent(), nodes[1].getparent() score = d.widget._compare_node(a, b, wsize, wsize) pprint(score) return print("score:", result.score) x, y = result.point # # pprint(result.widget) # # pprint(dict(result.node.attrib)) pprint(result.detail) im = draw_point(d.screenshot(), x, y) im.show()
def show_click_position(d: u2.Device, point: Point): # # pprint(result.widget) # # pprint(dict(result.node.attrib)) im = draw_point(d.screenshot(), point.x, point.y) im.show()