1

SeleniumWebDriverを使用していくつかの値を入力するテキストフィールドがほとんどないWebページがあります。しかし、IDが動的に変化しているため、seleniumframweworkで提供されているAPIを使用してこれらのアイテムをフェッチすることはできません。

たとえば、テキストフィールドの1つに次のIDがあります

<input id="order_unit_line_rate_806099_unit_price" type="text" value="" uniqueattr="Dynamic Site Accelerator / Dynamic Site Accelerator / Platform Fee / / Price" size="10" onchange="javascript:numberFormatValid('order_unit_line_rate_806099_unit_price', parseI18nNumber($('order_unit_line_rate_806099_unit_price').value, ',', '.'), 5, '.');" name="order_unit_line_rate[806099][unit_price]">

ここで、idの一部である数字806099は、新しいページごと、および新しいテキストボックスごとに異なります。findElements(By.id())APIを使用しても運がありませんでした。

誰かがこれらの要素を識別するためのアプローチを提案できますか?

私はエディターとしてEclipseを使用し、クライアントドライバーとしてJavaを使用し、自動化フレームワークとしてSeleniumwebDriverを使用しています。

ありがとうキラン

4

3 に答える 3

1

findElementsByTagNameを使用して、返された各要素をループし、そのIDと正規表現を確認できます。

public static WebElement findElementByRegexId(FindsByTagName ctx, String tagName, String regex) {
    List<WebElement> l = ctx.findElementsByTagName(tagName);
    for (WebElement e : l) {
        if (e.getAttribute("id").matches(regex)) {
            return e;
        }
    }
    return null;
}
于 2012-06-29T08:21:09.733 に答える
0

セレンAPIを使用すると、XPathロケーターを渡すこともできるため、おそらく次のようなものを試すことができます。

findElements(By.xpath("//input[@uniqueattr=\"Dynamic Site Accelerator / Dynamic Site Accelerator / Platform Fee / / Price\"]"));

詳細については、こちらをご覧ください。

于 2012-06-29T09:06:59.467 に答える
0

正規表現を使用する代わりに、以下のソリューションを使用できます

//input[contains(@name, 'order_unit_line_rate')] 
于 2012-06-29T09:24:41.120 に答える