2016-06-28 61 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