即使存在C#selenium,也无法在页面上找到此元素

时间:2018-06-16 16:40:20

标签: c# selenium selenium-webdriver xpath webdriver

我试过最长时间才发现这个元素,我无法弄明白。我的目标是使用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'");

提前致谢

3 个答案:

答案 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