class Program
{
static void Main(string[] args)
{
IWebDriver driver = new ChromeDriver();
//Dev environment
driver.Url = /*URL*/;
var trialGroupName = driver.FindElement(By.Name("TrialGroupName"));
trialGroupName.SendKeys(/*trial group name */);
var userName = driver.FindElement(By.Name("UserName"));
userName.SendKeys(/*username*/);
var password = driver.FindElement(By.Name("UserPassword"));
password.SendKeys(/*password*/);
var loginButton = driver.FindElement(By.Id("Ok"));
loginButton.Click();
//Find and click on Browse tab
var browseTab = driver.FindElement(By.Id("17"));
browseTab.Click();
}
}
OpenQA.Selenium.NoSuchElementException:'没有这样的元素:无法找到元素:{“method”:“id”,“selector”:“17”} (会议信息:chrome = 58.0.3029.110) (驱动程序信息:chromedriver = 2.30.477700(0057494ad8732195794a7b32078424f92a5fce41),platform = Windows NT 6.1.7601 SP1 x86_64)'
这是检查信息:
<td>
<a id="17" class="defaultMenu initMenu" href="javascript:onMenuHref(17)" notran="">Browse</a>
</td>
我也试过用XPath运行它(Chrome的短版本和FireBug的长版本)我收到同样的错误。我尝试添加一个隐式等待和一个Thread.Sleep()但仍然收到相同的错误。还尝试从一个不同的字段开始并标签到它然后它给了我相同的例外,但在新的领域。今天早上我也尝试过使用cssSelector,也无法让它工作。我确实试着做一个明确的等待,但我会说实话,我仍然试图消化并理解它,因为等待是一个新概念,我不完全理解它,所以我不认为我在做没错。
我是初学者,我目前正在尝试编写脚本以将其转移到需要测试的实际页面。我一直在教自己一些编码和硒,因为我现在是我公司唯一的QA人员,我真的认为我们可以从自动化中受益。页面的这一部分实际上并不是由我们编程的,它由托管我们使用的系统的第三方完成,因此我仅限于在检查中看到的内容。
(我注释了用户登录信息和URL,因为它仅供内部使用,无论如何都无法访问我们系统之外的页面。而且我很确定我不允许这样做。雇主)。
我将非常感谢您提供的任何帮助,或者我可以使用的任何其他资源。我一直在使用谷歌,所以可能有其他你知道的页面可以帮助我,我还没有找到。
答案 0 :(得分:3)
登录按钮将您带到一个新页面,您需要等待它加载。尝试使用explicit wait等待标签可点击。在以下示例中,超时为10秒,因此请根据需要进行修改。
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement browseTab = wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("17")));