如何获取静态下拉列表中带有选项的select标记的xpath



如何从html下方获取下拉列表中第二个元素的xpath我正在使用C#与specflow和selenium

在UI中,属性类型下有一个静态下拉列表,其中有两个选项"住宅"one_answers"商业",我需要找到第二个选项。

<select class= "form-control ng-pristine ng-empty ng-invalid-required ng-touched" type="text" 
id="propertyType" name="propertyTypr" ng-modal="lead.currentLeadContact.IsResidential" required 
style>
<option value="? object:null ?"></option>
<option value="true">Residintial</option>
<option value="false">Business</option>
</select>

已经尝试使用

//select[@id='prorpertyType']/option[@value='false' and . ='Business']

//select[@id='propertyType' and @value='1'] same xpath with value 0 and 2

如果有人能帮我,我将不胜感激。

要选择文本为Business<option>,您需要诱导WebDriverWait等待ElementToBeClickable(),并且您可以使用以下定位器策略之一:

  • 使用CssSelectorSelectByValue():

    new SelectElement(new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("select#propertyType[name='propertyTypr']")))).SelectByValue("false");
    
  • 使用XPathSelectByText():

    new SelectElement(new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("//select[@id='propertyType' and @name='propertyTypr']")))).SelectByText("Business");
    

如果你只想找到文本为"商业";,你可以试试这个:

string optionText = "Business";
string xpath = "//option[text()='"+ optionText +"']"

相关内容

  • 没有找到相关文章

最新更新