Selenium WebDriver WebTable getData:如果它取决于另一个“td”,如何获得值“td”

时间:2016-02-23 09:18:30

标签: selenium webdriver

我面临一个问题,即网表中某个特定单元格(td)的值取决于另一个单元格(td)..

示例:

  1. 使用http://www.espncricinfo.com/new-zealand-v-australia-2015-16/engine/match/914239.html并点击完整分数...

  2. 现在我希望得到一个不败的击球手名字(需要“不出局”击球手来自新西兰第一局。在这种情况下“TA Boult”)

  3. 但是“TA Boult”和“Not out”是同一个“tr”的2个不同的td。

  4. 有人可以指导我如何实现这一目标吗?

3 个答案:

答案 0 :(得分:0)

以下XPath将为您解决此问题:

//table[contains(@class,"batting-table")][1]//td/a[.="TA Boult"]/../../td[@class="dismissal-info" and contains(text(), "not out")]

您可能希望使顶级表的选择器更具体一些,但基本上这个XPath正在执行以下操作:

  1. 找到第一个包含类名" batting-table"
  2. 的表
  3. 获取此表中的所有td元素
  4. 获取a元素
  5. 中的所有td元素
  6. 指定a元素的文本必须是您正在搜索的播放器,在本例中为TA Boult。
  7. 使用/../..选择具有文本" TA Boult"的a元素的父元素的父元素。因此,如果a标记的父级为td,则td标记的父级为tr
  8. 现在我们在包含任何匹配a标记的行中,我们可以在此行中搜索td标记,其中包含"解雇信息"包含文字"不在"。
  9. 的课程

    然后,您可以再次使用/../..作为XPath的结果返回整行。

    基本上,你正在搜索一行,然后搜索一个孩子,然后搜索一个父母,然后搜索另一个孩子,然后返回一个正确的行。

    希望有所帮助!

答案 1 :(得分:0)

好的......

//all tr elements.

IList<IWebElement> tableTRCollection = driver.FindElement(By.Xpath("//table[@class='batting-table innings']")).FindElements(By.TagName("tr"))

//in every tr all td elements will be:

IList<IWebElement> tableTDCollection;

foreach(IWebElement tr in tableTRCollection )
{
tableTDCollection = tr.FindElements(By.TagName("td"));
}

//in td collection take all td

foreach(IWebElement td in tableTDCollection )
{
string tdText = td.Text;
}

依旧......

获得所有收藏后,您可以获得所有收藏。

答案 2 :(得分:0)

谢谢大家的答案。经过多次努力,我找到了答案,但发现解决方案与Ben建议的几乎相同。

虽然我没有尝试其他建议的解决方案。

以下是代码......

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.kathi.stackoverflow.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/mytext_view"
        android:text="Test! " />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btm_zoomIn"
        android:text="Zoom in"
        android:layout_alignTop="@+id/btm_zoomOut"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btm_zoomOut"
        android:text="Zoom out"
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />


</RelativeLayout>