2

Chromedriver を使用して、次の要素を見つけようとしています。

<td class="section-menuoption"
  onmouseover="this.className='section-menuoption-hilite';"
  onmouseout="this.className='section-menuoption';" align="left"
  onclick="self.jssDetails.location='products.php?xUser=kery&amp;xRand=123';">
  Scheduled Changes
</td>

Firefox で SeleniumIDE を使用する場合、このセレクターを問題なく使用できます。

//*[contains(text(), 'Scheduled Changes')] 

ただし、このセレクターを Chromedriver で使用しようとすると、「そのような要素はありません」というエラーが表示されます (Maven 経由で実行)。私の Chromedriver コードは次のようになります。

WebElement box = driver.findElement(By.xpath("//*[contains(text(), 'Scheduled Changes')]"));
System.out.print(box.getText());
box.click();

さまざまな引用戦略、さまざまな xpath (SeleniumIDE でも正しく解決される) を試しましたが、成功しませんでした。今考えられる唯一のことは、XPath の実装を変更することですが、Chromedriver でそれが可能かどうかさえわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1

3

まず、どのような種類のフレームにも含まれていないことを確認してください。それ以外の場合は、このように最初にフレームに切り替える必要があります。

次に、XPath の代わりに css セレクターを使用してみてください。例 (さまざまなバリエーションを試す必要がある場合があります):

WebElement box = driver.findElement(By.cssSelector("td[onclick*=\"self.jssDetails.location='products.php?xUser=kery&amp;xRand=123';\"]"));

また、分析に役立つように、試したすべての XPath を投稿することもできます。

于 2013-07-29T21:26:22.923 に答える