Selenium ChromeDriver не перемещается по URL после публикации - PullRequest
0 голосов
/ 25 сентября 2018

Я пользуюсь драйвером 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)

Эта же ошибка произошла в VS, когда браузер неправильно перемещается по URL.Как решить эту проблему.И учтите, что я успешно установил следующие пакеты NuGet.Я работаю на Windows Server 2012 ПК.Я разместил свое приложение на своем собственном IIS

NuGet Packages: RC | WebDriver | WebDriverBackedSelenium | Support

Заранее спасибо.

1 Ответ

0 голосов
/ 25 сентября 2018

Это может произойти по нескольким причинам.Вам необходимо реализовать механизм ожидания и опроса

Это один из способов сделать это:

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 и ExpectedConditions в этой ссылке .Это в Java, но вы можете конвертировать это для C #

...