2

ちょっとした背景: HTML は次のようになります。

    <table>
        <thead>
            <tr>
                <th>Head1</th>
                <th>Head2</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    <span>
                       <span class="icon">S</span>
                        "Auto"
                    </span>
                </td>
                <td>
                    <span>
                        Cost, Time
                    </span>
                </td>
            </tr>
        </tbody>
    </table>

コードの単純なバージョンは次のようになります: (pry で実行)

[69] pry> e = driver.find_element(:xpath, "//table/tbody/tr/td/span")
=> #<Selenium::WebDriver::Element:0x7ba9a4d694458ec id=":wdc:1361791490676">

[70] pry> e.text
=> "SAutomotive"

[71] pry> e = driver.find_element(:xpath, "//table/tbody/tr/td/span[contains(text(),'Auto')]")

Selenium::WebDriver::Error::NoSuchElementError: The element could not be found
from /Users/ben/.rvm/gems/ruby-1.9.3-p194/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'

HTML コードを変更するアクセス権がありません。このテーブルには 1 行しかありませんが、さらに追加される可能性があり、行の場所を予測できません。そのため、名前で見つけようとしています。

私の通常のコードは次のとおりです。

e = driver.find_element(:xpath, "//table/tbody/tr[td/span[contains(text(),'Auto')]]")

私が抱えている問題は、最初のテーブルセルのテキストで指定された名前でテーブル内の行を取得する方法が見つからないことです。

4

1 に答える 1

3

以下のxpathを使用

"//table/tbody/tr/td/span[contains(.,'Auto')]"
于 2013-02-25T15:31:12.007 に答える