2016-04-13 17 views
2

Benim xpathXPath'da ana üst öğeye nasıl geri dönülür ve metni nasıl alırsınız?

//div[contains(@class,'ui-dialog ui-widget ui-widget-content ui-corner-all ui-front ui-draggable')]//div[@class='ui-widget-content slick-row odd' or @class='ui-widget-content slick-row even']/div/input[contains(@id,'custProglabel')] 

Şimdi sadece input etiketinden önce div erişebilir ve metni almak gerekir olduğunu.

By.Xpath(//input[contains(@id,'custProglabel')]/preceding-sibling::div).getText

bu ve benim giriş etiketi değişikliklerinin sadece içerik gibi birçok unsuru var: Ben kullanarak çalıştı. Yani içeriğe dayanarak hemen div'a erişmeye çalışıyorum ve metnini aldım.

cevap

6

Sen küçük harf 'x' ile başlamalıdır Bir yan not olarak ..

By.xpath("//input[contains(@id,'custProglabel')]/..") 

, xpath kullanarak ebeveyne alabilirsiniz. xpath altında

+0

Çalıştı! xpath büyük harf bunun için bir typo.sorry idi. – Aish

0

kullanım:

//div[contains(@class,'ui-dialog ui-widget ui-widget-content ui-corner-all ui-front ui-draggable')]//div[@class='ui-widget-content slick-row odd' or @class='ui-widget-content slick-row even']/div/input[contains(@id,'custProglabel')]/parent::div 
3

Aksine input aşağı bırakın ve geri div kadar gelip daha div

//div[input/@id='custProglabel'] 

veya herhangi bir öğeye ait bir dayanak tarafından düşünün

//*[input/@id='custProglabel'] 

Ayrıca, not yanlışlıkla custProglabel2 veya MYcustProglabel ile eşleşebilir, bu yüzden burada eşitlik testi kullanmak daha iyidir.

+2

Çocuk /// [*/@ id = 'id'] 'alt öğeye sahip olan üst öğe, niçin /// [id = 'id']/..' alt öğesinin ebeveyni seçmekten daha iyi olur? Rasyonel bir sebep var mı? –

+0

Tercihim yok, sadece "ideal değil" yazdığınız için daha iyi performans veya daha az yan etki gibi belirli bir neden olup olmadığını merak ediyordum. –

+0

Bu fazın ima ettiğinden daha ince, bu yüzden size puan vereceğim. Cevap güncellendi. – kjhughes

İlgili konular