我试过最长时间才发现这个元素,我无法弄明白。我的目标是使用setattribute将值设置为数字,但我找不到元素。
<input type="tel" id="cvNumber" tabindex="1" data-shortname="cvv" class="cc-input ncss-input pt2-sm pr4-sm pb2-sm pl4-sm u-align-center" "cvv"="" autocomplete="off" autocorrect="off" value="" maxlength="4">
以下是我用来尝试查找元素的一些代码
driver.FindElement(By.XPath("//input[@class='cc-input ncss-input pt2-sm pr4-sm pb2-sm pl4-sm u-align-center');
driver.FindElement(By.Id("cvNumber");
driver.FindElement(By.XPath("//input[@id='cvNumber'");
driver.FindElement(By.className("cc-input ncss-input pt2-sm pr4-sm pb2-sm pl4-sm u-align-center");
driver.FindElement(By.XPath("//input[@type='tel'");
提前致谢
答案 0 :(得分:0)
尝试使用此代码:
driver.FindElement(By.XPath("//input[@id='cvNumber'][@type='tel']");
答案 1 :(得分:0)
我认为元素选择器没有任何问题。很可能你没有等待足够长的元素
var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(10));
var myElement = wait.Until(x => x.FindElement(By.Id("cvNumber")));
if(myElement.Displayed) {
//do stuff
}
或者元素可能在框架内部,因此您需要在执行上述代码之前切换到框架。
driver.SwitchTo().Frame(driver.FindElement(By.id("frameId")));
答案 2 :(得分:0)
根据您的共享HTML,您可以使用以下位置策略
Xpath的
.//*[@id='cvNumber']
CSS选择器
#cvNumber