代码之家  ›  专栏  ›  技术社区  ›  Roro

c#Selenium基于Span文本选择输入

  •  0
  • Roro  · 技术社区  · 7 年前

    我正在尝试根据地址的名称选择一个单选按钮。下面,我需要选择具有名称的范围或单选按钮本身。无论哪种方式,它都会选择单选按钮。我需要根据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 回复  |  直到 7 年前
        1
  •  3
  •   Andersson    7 年前

    您可以尝试在XPath下面通过部分文本定位所需的单选按钮:

    "//label[contains(.,'" + shipName + "')]"