1

Selenium WebDriver を使用して要素を見つけるのに助けが必要です。可能なすべてのセレクターを試しましたが、要素を見つけることができません。

ご参考までに。id="ext-gen26" は定数ではありません。これは、新しいページが読み込まれるたびに変化します。

Tried Selectors:

    By.xpath("//button[@class=\"x-btn-text\"]/text()='Find Accounts'")
    By.cssSelector(input[name='id'])
    By.id("ext-gen26") 

Code:
    <div id="x-form-el-ext-gen26" class="x-form-element" style="padding-left:155px">
    <input id="ext-gen26" class="x-form-text x-form-field " type="text" name="id" 
    autocomplete="off" size="20" style="width: 212px;">
    </div>

アカウント ID 要素を検索し、検索した要素にテキストを送信したいと考えています。

いくつかの光を当てていただければ幸いです。


作成時にカスタム UITableViewCell のサブビューのサイズを変更する

独自の XIB を持つカスタム UITableViewCell を作成しようとしています。これには、2 つの重要な編集可能なコンポーネントが含まれています。

  • UIラベル
  • 'end-cap insets' を持つ UIImage - この画像はラベルの後ろにあり、それに合わせてサイズ変更されます

UITableViewCell を作成すると、そのラベルのテキストを簡単に設定できますが、同じ方法で、UIImage のフレームを UILabel のフレームと一致するように変更しようとします。ただし、テーブルビューをスクロールしてセルを「リロード」してデキューし、表示に戻すまで、これは発生しません。

ビュー コントローラーの .m にカスタム テーブル ビュー セルを作成します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *UITableViewCellIdentifier = @"msgCell";

    RMMessageCell *cell = [tableView dequeueReusableCellWithIdentifier:UITableViewCellIdentifier];

    if (cell == nil) {
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MessageCell" owner:self options:nil];
        cell = [topLevelObjects objectAtIndex:0];
        [cell customInit]; //This sets up the ImageView's image etc
    }

    [cell setMessageValue:[_messages objectAtIndex:indexPath.row]]; //SEE BELOW

    return cell;
}

...そして、カスタム セルの .m では、テキスト ラベルの設定と画像のサイズ変更を次の方法で処理します。

- (void)setMessageValue:(NSString *)message {

    _testLabel.text = message;
    // Assume the text label's frame has already been set to the message's length 
    // (will add this in once I figure out how to change the imageView's 
    // frame correctly)

    // Set the image view's frame to the label's
    // THIS DOES NOT TAKE EFFECT UNTIL THE TABLE VIEW IS RE-SCROLLED
    CGRect frame = _imageView.frame;
    frame.size.width = _testLabel.frame.size.width + 8;
    _imageView.frame = frame;
}
4

3 に答える 3

0

これが私のアプローチです。クライアント側でExtJSコンポーネントクエリを使用してIDを取得し、IDを使用してWebElementを見つけます。キーを送信するには、通常、「inputEl」を取得するために 1 レベル深く掘り下げる必要があります。Java コードのサンプル:

//a fully qualified ExtJS component query that will return one match only
String query = "viewport #panel1 textfield[fieldLabel='Test Field']";
//use component query to find id
String js = "return Ext.ComponentQuery.query(\"" + query + "\")[0].inputEl.id;";
String id = (String) ((JavascriptExecutor) _driver).executeScript(js);    
WebElement element = driver.findElement(By.id(id));
element.sendKeys("it works");
于 2013-10-11T00:16:04.037 に答える