我正在尝试查找ID名称已更改的元素(并且我不确定将其更改为什么),因此我需要动态地查找它。当前代码是:
[FindsBy(How = How.Id, Using = "address.surname")]
public IWebElement AddressLastname_Input { get; set; }
public void AddressEnter_function(IWebDriver D, DataRow UserDetail)
{
log.sendkeylog(AddressLastname_Input,
UserDetail["LastName"].ToString(),
"Enter LastName Address Section", drv: D);
}
相应的HTML:
<div class="form-group">
<label class="control-label " for="address.surname">
Last name<span> <font color="red">*</font></span>
</label>
<input id="address.surname" name="lastName" class="form-control form-
control" required="required" type="text" value="">
</div>
我得到的错误是“无法通过ID查找元素”。是否有一种方法可以在不知道特定ID名称/文本的情况下找到它?
答案 0 :(得分:-1)
不看HTML标记很难回答,但是如果ID和名称不断变化,也许您可以尝试通过CSS或什至更好的XPath来定位它?
事实证明,XPath对我而言更可靠,尽管速度稍慢。
WebDriver.FindElement(By.XPath("//input[@class='login']")).Click();
在您的代码中,form-control类应该给您一个提示,以便您也许想运行一个xpath来搜索类型为type-control并可以选择检查值的input类型的元素?
答案 1 :(得分:-1)
这个要求对我来说100%毫无意义。如果找不到该元素,是偶然出现在iFrame还是模态上?
id是否正在更改?如果是这样,您可以尝试:
//div[@class='form-group']/input[@name='lastName']
or
//label[@for='address.surname']/following-sibling::input