使用xpath的Selenium - 如何使用兄弟元素文本获取元素文本

时间:2017-02-14 06:54:05

标签: html selenium xpath selenium-webdriver gettext

我被困在一端,我无法获得文本值。

为了更好地观看: -

address_zip...

我使用以下xpath识别类//*[contains(text(),'30428')]

.singleImageWraps

如何获取文字值 GA Glenwood

5 个答案:

答案 0 :(得分:2)

  

它不会工作,因为有相同的重复类名,那就是为什么我要问有没有办法从text()指向上面的两个元素。

您可以在xpath下面使用: -

  • 获取 Glenwood 文字:

    .//div[span[text() = '30428']]/span[@class = 'address_city']
    
  • 获取 GA 文字:

    .//div[span[text() = '30428']]/span[@class = 'address_state']
    

答案 1 :(得分:1)

您可以使用preceding-sibling

//*[contains(text(),'30428')]/preceding-sibling::span[@class='address_city']
//*[contains(text(),'30428')]/preceding-sibling::span[@class='address_state']

您还可以找到邮政编码元素并使用它

WebElement zip = driver.findElement(By.xpath("//*[contains(text(),'30428')]"));
String city = zip.findElement(By.xpath("//preceding-sibling::span[@class='address_city']")).getText();
String state = zip.findElement(By.xpath("//preceding-sibling::span[@class='address_state']")).getText();

答案 2 :(得分:0)

为什么不使用:

string city =Driver.FindElement(By.ClassName("address_city")).Text;
string state =Driver.FindElement(By.ClassName("address_state")).Text;

如果这些类与其他元素重复:

//first get the zip as you are doing now.
IWebElement zip=Driver.FindElement(By.Xpath("//*[contains(text(),'30428')]"));

//now get the father element.
IWebElement father=zip.FindElement(By.XPath(".."));

//now get all the spans
IList<IWebElement> allElements=father.FindElements(By.TagName("span"));

//reach the elements you want.
IWebElement city=allElements.ElementAt(0);
IWebElement state=allElements.ElementAt(1);

答案 3 :(得分:0)

// [含有(文本(), '30428')] /前同辈::跨度[含有(@类, 'ADDRESS_CITY')] // [含有(文本(), '30428')] /前同辈::跨度[含有(@类, 'ADDRESS_STATE')]

答案 4 :(得分:0)

尝试下面提到的xpath

获取 GA

的价值
//span[text()= '30428']/..//preceding-sibling::span[text()= 'GA')]

xpath的说明:使用text方法和<span>标记,并使用<span>继续使用其他preceding-sibling keyword标记。

  

OR

//span[text()= 'Glenwood']/following-sibling::span[text()= 'GA']

xpath的说明:使用text方法和<span>标记,并使用<span>继续使用其他following-sibling keyword标记。

  

OR

//span[text()= 'Glenwood']/..//following-sibling::span[text()= 'GA']

xpath的说明:使用text方法和<span>代码,并使用<span>继续使用其他following-sibling keyword代码。

获得 Glenwood

的价值
//span[text()= 'GA']/..//preceding-sibling::span[text()= 'Glenwood']

xpath的说明:使用text方法和<span>代码,并使用<span>继续使用其他preceding-sibling keyword代码。