如何从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()
,并且您可以使用以下定位器策略之一:
-
使用CssSelector和
SelectByValue()
:new SelectElement(new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("select#propertyType[name='propertyTypr']")))).SelectByValue("false");
-
使用XPath和
SelectByText()
: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 +"']"