0

ライトボックスが認識されたら、その中にあるものにアクセスするにはどうすればよいですか?

入力すると:

within("div.fancybox-wrap.fancybox-desktop.fancybox-type-iframe.fancybox-opened") do
    within(:xpath, "//table[@id='small_calendar'][0]") do
        page.find('td', :text => '5').click
    end
end

為に

<table id="small_calendar">

私は...

Unable to find xpath "//table[@id='small_calendar'][0]" (Capybara::Element
NotFound)

変更された検索....

sleep(10)
within("div.fancybox-wrap.fancybox-desktop.fancybox-type-iframe.fancybox-opened") do
    within_frame('fancybox-frame') do
        #within(:xpath, ".//table[@id='small_calendar'][0]") do
            page.find(:xpath, ".//table[@id='small_calendar'][0]/td[@text='5']").click
        #end
    end
end

このバグを取得します...

  findElements execution failed;
   Element does not exist in cache (Selenium::WebDriver::Error::StaleElement
ReferenceError)
4

2 に答える 2

1

要素がフレーム内にある場合は、within_frameメソッドを使用して明示的に指定する必要があります。

within_frame('fancybox-frame') do
    within(:xpath, "//table[@id='small_calendar']") do
        page.find('td', :text => '5').click
    end
end
于 2012-12-04T22:45:48.210 に答える
0

とった!

問題は、フレーム内と xpath がうまくいかないことのようです。方程式からそれを削除すると、望ましい結果が得られました。

within_frame('fancybox-frame') do
    #within(:xpath, ".//table[@id='small_calendar'][0]") do #chokes
    within(all("table[id='small_calendar']").first) do  #works!
         #page.find(:xpath, ".//table[@id='small_calendar'][0]/td[@text='5']").click #chokes
         page.find("td[id='2013_0_6']").click #works!
    end
end
于 2012-12-05T16:54:26.177 に答える