2016-06-28 37 views
0
Appium 1.5.0 
Xcode 7.3 
IOS 10.11.4 OSX EI Capitan 
Using on:Simulator iOS 8.1 

假设的位置,我们有一个文本字段To see more information click这里and to get more click这里检测特定的文本

所以我使用xpath确定了文字,我可以得到它的位置和大小。 现在我们可以以某种方式获得这里的位置。我需要单击它,但因为它不是一个元素,我无法搜索它。所以不知何故,如果我能得到它的位置,我可以在那个tap

但是,我们如何获得它的位置并保持它的通用性,以便它可以在不同的设备上运行?

+0

你可以参考这个 http://stackoverflow.com/questions/21349725/character-index-at-touch-point-for-uilabel – Proton

+0

我有一个想法,但我不知道Appium,你可以使用Objective C吗? – AnthoPak

+0

@AnthoninC。不幸的是必须使用appium ...仍然可以分享想法.....作为一个答案...我会尝试,如果它的工作.... m在python – vks

回答

1

没有任何直接的方法可以实现这一点(Appium本身没有API)。 但是,我的解决方案是通用的,可用于所有设备(Android和iOS),所有编程语言实现。

  1. [您已经完成]获取元素的位置和大小。
  2. 截取当前屏幕截图。
  3. 使用图片的位置和尺寸从屏幕截图裁剪图像[如果没有模棱两可的目标,可以跳过此步骤]
  4. [您只需手动执行一次]裁剪图像部分想要获得位置。
  5. 搜索裁剪图像的位置,获取位置并执行精确的点击/点击。

对于图片搜索参考这里:How to find an image within another image using python

+0

我标记了这一点,虽然它不是完全通用的,因为当设备改变时,一次手动工作将不得不再次完成... – vks

1

使用Objective C(我知道OP使用Appium但他告诉我回答)是使用库如TTTAttributedLabel,并用它这样的想法:

创建TTTAttributedLabelUILabel子类),并将文本内容,就好像它是一个UILabel。将其代表设置为self。然后,添加一个链接到一个词是这样的:

NSRange rangeWord = [attributedLabel.text rangeOfString:@"here"]; 
[attributedLabel addLinkToURL:[NSURL URLWithString:@"anActionOnClickHere"] withRange:rangeUser]; 

在点击的话,它会调用这个方法,可以在其中处理click:

- (void)attributedLabel:(__unused TTTAttributedLabel *)label 
    didSelectLinkWithURL:(NSURL *)url { 
    NSString *urlToString = [url absoluteString]; 

    if ([urlToString containsString:@"anActionOnClickHere"]) { //perform segue for example 
     [self performSegueWithIdentifier:@"hereSegue" sender:self]; 
    } 
} 

我绝对不知道的Python,希望你会找到一个等价的方法。

+0

Thanx ....将尽快潜入深渊,但似乎这可能是不可能在python .....将更新u – vks

+1

希望你会找到一个解决方案在Python的人! – AnthoPak