Sadece bununla karşılaşıyorum ve koleksiyonlardan öğelerle uğraşmak biraz zor. Benim durumumda, bir tabloyu ayrıştırmaya ve bir sütunun hücrelerinde bulunan değerleri kontrol etmeye çalışıyorum. OnWatir bir koleksiyondaki öğeleri bulamıyor
def check_cells_values(table, cell_index)
table.rows.each do |row|
row.cells[cell_index].text.should == some_value
end
end
"row.cells [cell_index] .text.should == some_value" testleri bu hata ile başarısız satır: İşte kodudur
Watir::Exception::UnknownObjectException: unable to locate element, using {:element=>#<Selenium::WebDriver::Element:0x7b40a27fd80f640e id="{af57e857-69ed-5345-a4ae-5ab80dff364a}">}
Bu sadece yeterlidir satırlar boyunca yineleyin ve her satırdaki metni çıktı olarak alın. Bazı satırlardan sonra (rastgele), aynı mesajla başarısız olur.
Justin'in bu sorunu içerdiği bu bağlantıyı (https://jkotests.wordpress.com/unable-to-locate-element/) buldum, ancak öğeleri koleksiyonlarına bağlı bir şey bulamadım.
Güncelleştirme: Burada, ayrıştıracağım bir tablonun bir satır örneği var.
<tr class="dataRow even first" onclick="highlightElem(this)" onmouseover="if (window.hiOn){hiOn(this);} " onmouseout="if (window.hiOff){hiOff(this);} " onblur="if (window.hiOff){hiOff(this);}" onfocus="if (window.hiOn){hiOn(this);}">
<td class="dataCell " id="someid3" colspan="1"><a href="/url">8882</a></td>
<td class="dataCell " id="someid2" colspan="1">
<label>Some kind of service</label></td>
<td class="dataCell " id="someid6" colspan="1"></td><td class="dataCell " id="someid7" colspan="1"><input class="btn" id="someid8" onclick="A4J.AJAX.Submit('pgToolOffer:pgForm',event,{'similarityGroupingId':'someid8','oncomplete':function(request,event,data){UpdatePopupPosition();},'parameters':{'selectedRatePlan':'Annual','selectedOfferFriendlyName':'Some service 50$','someid8':'someid8','selectedProduct':'Service Descrition','selectedOfferCode':'product\duration\x2DDG275'} });return false;" value="Show Offer Details" type="button"></td>
</tr>
Bu kod için aldığınız istisnanın bu olduğuna emin misiniz? # için "herbiri" tanımlanmamış bir yöntem "- yani [ver_index] .each" hücreleri geçerli olmamalıdır. Belirli bir hücreye sahip olduğunuzda, hücreler [given_index] ', içinden geçecek hiçbir şey yoktur. –
Ben Justin ile anlaşma yapıyorum. ".cells" bir koleksiyon döndürür, ancak '.cells {index]' tek bir hücre olacak, bu yüzden üzerinde yineleme yapacak bir şey yok. Rows.each loop içindeki kod için row.cell (: index => given_index) .text.should == expected_value' gibi bir şey olmasını beklerdim –
Üzgünüm, yanlış kod yazdım biraz geç gördüm . Gerekli düzeltmeleri ekledim. Bir soru olsa da. Row.cell (: index => given_index) .text' ile aynı değil 'row.cells [index]' ('index', koleksiyondaki hücrenin yeridir)? –