c#Selenium根据跨文本选择输入

时间:2018-01-03 20:12:00

标签: c# selenium xpath

我正在尝试根据地址名称选择一个单选按钮。下面我需要选择具有名称的范围或单选按钮本身。无论哪种方式看起来都会选择单选按钮。我需要根据span类中的名称执行此操作。在这个人的名字之前有一个随机数量的空格,所以我没有尝试使用包含John Doe的StartsWith。

<div data-a-input-name="selectedAddress" class="a-radio">
   <label><input name="selectedAddress" value="113290190603" type="radio">
    <i class="a-icon a-icon-radio"></i>
     <span class="a-label a-radio-label">
         John Doe, Something RD, Some City, State, #####-####, Phone: #####
     </span>
   </label>
</div>

无论我尝试过哪种方式,我似乎无法获得正确的语法。以下是我尝试过的一些语法:

var Xpath = "//span[contains(@class,'a-label a-radio-label')][contains(text(),'" + shipName + "')]]";

            var radio = driver.FindElement(By.XPath(Xpath));
            radio.Click();

而且:

var Xpath = ".//input[following-sibling::strong[contains(.,'" + shipName + "')]]";
            var radio = driver.FindElement(By.XPath(Xpath));
            radio.Click();

我无法指出XPath的特定点,因为我要查找的项目可能不一定在同一个有序位置。这就是为什么我需要按名称搜索它。我也不能通过输入的值来做到这一点,因为我事先并不知道这些信息。我实际上已经尝试了上面显示的两个XPATH语法的许多其他差异,但这些是我现在留下的例子。谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

您可以在XPath下方尝试通过部分文本找到所需的单选按钮:

@Override
public void onPageSelected(int position) {

    Fragment fragment = adapter.getFragment(position);
    if (fragment != null) {
        fragment.onResume();
    }
}