2

みんな!次の問題で立ち往生しています:いくつかあります

SearchContext searchContext;
By by;

WebDriver または WebElement の可能性があります。両方とも既に初期化されていると仮定します (方法はわかりません)。今、そのようなxp​​athを持つ要素を見つけたいのですが、次のようです

List<WebElement> elements = searchContext.findElements(by);

ただし、searchContext が WebElement であり、

by = By.xpath("//div");

それはうまくいきません!(要素が見つからない)、する必要があるため

by = By.xpath("./div");

(「Locating child nodes of WebElements in selenium 」を参照) しかし、前述のように、by がどのように初期化されたかについては何もわかりません。

だから、私の質問は: 上記の問題にもかかわらず、要素を適切に見つける方法はありますか? by と searchContext の 2 つの変数があり、searchContext で指定された要素を見つける必要があります。

4

2 に答える 2

0

これが発生した場合に例外をスローするヘルパーメソッドでそれを行うことができます

public List<WebElement> returnSearchContext(By by, SearchContext searchContext){
  List<WebElement> elements = searchContext.findElements(by);
  if (elements.getSize()>0){
     return elements;}
   else{
     throw new ElementNotFoundException();
   }
}

IDE にアクセスせずにこれを書いているため、サンプル コードでエラーが発生する可能性があります。たとえば、例外にはいくつかのパラメーターが必要になると思います。しかし、あなたがその考えを理解してくれることを願っています。

于 2012-08-05T13:26:28.743 に答える
0

私が理解しているように、それを行う方法があります。それを行う唯一の方法 - 手動で By.xpath を適切に指定することです:

By child = By.xpath("/div");
By descendant = By.xpath("//div");

WebDriver.isAssignableFrom(searchCOntext.getCLass()) の場合、および

By child = By.xpath("div");
By descendant = By.xpath(".//div");

WebElement.isAssignableFrom(searchCOntext.getCLass())の場合。私見、それは悪いです。

于 2012-08-08T06:58:39.243 に答える