Selenium ChromeDriver 发布后无法导航网址



我正在使用Selenium C#chrome驱动程序访问某些网站并从中下载数据。这是我的应用程序的示例代码。

public class HomeController : Controller
{
public ActionResult Index()
{
try
{
AppSettingsReader configReader = new AppSettingsReader();
using (var driver = new ChromeDriver(HostingEnvironment.ApplicationPhysicalPath)) //here I used latest chrome driver(V 2.42.59)
{
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
//driver.Manage().Timeouts().PageLoad = TimeSpan.FromMinutes(2);
driver.Url = "https://crims.crib.lk";
var userNameField = driver.FindElementById("txtUserName");
var userPasswordField = driver.FindElementById("txtPassword");
driver.Quit();
}
}
catch (Exception ex)
{
Logger.LogWriter(" WebApplication2.Controllers", ex, "HomeController", "Index");
}
return View();
}
}

当我通过VS执行代码时,此代码工作正常。通过 IIS 服务器发布应用程序后,驱动程序不会导航到 URL。日志文件中显示以下错误。

Source :WebApplication2
Module:HomeController
Method:Index
Message :no such element: Unable to locate element:
{"method":"id","selector":"txtUserName"}
(Session info: chrome=69.0.3497.100)
(Driver info: chromedriver=2.42.591088
(7b2b2dca23cca0862f674758c9a3933e685c27d5),platform=Windows NT
6.2.9200 x86_64)
StackTrace :   at
OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response
errorResponse)

当浏览器无法正确导航到 URL 时,VS 中也发生了同样的错误。如何解决这个问题。并记下我成功安装了以下NuGet包。我正在Windows服务器2012 PC上工作。我托管了自己的应用程序 IIS

NuGet Packages: RC | WebDriver | WebDriverBackedSelenium | Support

提前谢谢。

发生这种情况可能有多种原因。您需要实现等待和轮询机制

这是一种方法:

var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 60));
var element = wait.Until(condition =>
{
try
{
var elementToBeDisplayed = driver.FindElement(By.Id("content-section"));
return elementToBeDisplayed.Displayed;
}
catch (StaleElementReferenceException)
{
return false;
}
catch (NoSuchElementException)
{
return false;
}
});

您还可以在此链接中使用 FluentWait 命令和 ExpectConditions 示例。这是在java中,但你可以将其转换为c#。

相关内容

  • 没有找到相关文章

最新更新