1

そのため、私は Selenium と Python 2.7 を組み合わせて使用​​しています (問題がある場合は、私が使用しているブラウザーは Firefox です)。私は XPath を初めて使用しますが、WebElements のフェッチには非常に便利なようです。

解析している次の HTML ファイルがあります。

<html>
  <head></head>
  <body>
    ..
    <div id="childItem">
      <ul>
        <li class="listItem"><img/><span>text1</span></li>
        <li class="listItem"><img/><span>text2</span></li>
        ...
        <li class="listItem"><img/><span>textN</span></li>
      </ul>
    </div>
  </body>
</html>

これで、次のコードを使用して、すべての li 要素のリストを取得できます。

root  = element.find_element_by_xpath('..')
child = root.find_element_by_id('childDiv')
list  = child.find_elements_by_css_selector('div.childDiv > ul > li.listItem')

XPath ステートメントでこれを行う方法を知りたいです。私はいくつかのステートメントを試しましたが、最も単純なものは次のとおりです。

list  = child.find_element_by_xpath('li[@class="listItem"]')

しかし、私はいつもエラーが発生します:

selenium.common.exceptions.NoSuchElementException: Message: u'Unable to locate element: {"method":"xpath","selector":"li[@class=\\"listItem\\"]"}';

回避策 (最初の 3 行) があるので、これは私にとって重要ではありませんが、何が間違っているのか知りたいです。

4

1 に答える 1

5

.//xpath の先頭に次のものがありません。

list  = child.find_element_by_xpath('.//li[@class="listItem"]')

要素内の.//任意の場所を検索する手段child

于 2013-07-09T19:54:19.957 に答える