Как я могу решить, есть ли конкретный c текст на веб-сайте с Selenium - PullRequest
0 голосов
/ 04 февраля 2020

РЕДАКТИРОВАННОЕ ПОСТ

Прежде всего, на сайте есть похожий вопрос, но он не работает, поэтому я и спрашиваю. Я должен решить, есть ли конкретный c текст LİSTELENECEK VERİ BULUNAMAMIŞTIR. на HTML коде, есть только id атрибут, вот код HTML:

<center id="genelUyariCenterTag">LİSTELENECEK VERİ BULUNAMAMIŞTIR.</center>

Вот C# код:

 WebClient client = new WebClient();
void goMadde15Down() {
                    driver.FindElement(By.LinkText("İŞVEREN")).Click();
                    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
                    driver.FindElement(By.LinkText("TEŞVİKLER VE TANIMLAR")).Click();
                    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
                    driver.FindElement(By.LinkText("4447/GEÇİCİ 15. MADDE LİSTELEME/SİLME")).Click();
                    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
                    string siteSource15 = client.DownloadString("https://uyg.sgk.gov.tr/IsverenSistemi");

                    string strText = driver.FindElement(By.XPath("//center[@id='genelUyariCenterTag' and contains(.,'BULUNAMAMIŞTIR')]")).Text;

                    if (strText.Contains("LİSTELENECEK VERİ BULUNAMAMIŞTIR."))
                    {
                        Console.WriteLine("madde15 there is no Excel");
                    }
                    else
                    {
                        Console.WriteLine("madde 15 there is an Excel");
                    }

Проблема в том, что условие всегда сходится к else предложению

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Вместо if и else Если вы можете использовать блоки try-catch, вы можете использовать следующий код:

 void goMadde15Down() {
       driver.FindElement(By.LinkText("İŞVEREN")).Click();
       driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
       driver.FindElement(By.LinkText("TEŞVİKLER VE TANIMLAR")).Click();
       driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
       driver.FindElement(By.LinkText("4447/GEÇİCİ 15. MADDE LİSTELEME/SİLME")).Click();
       driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

            try  {
                    Console.WriteLine("There is an Excel File");
                    //Download code here


                 }
            catch (Exception e)
                 {
                        Console.WriteLine("There is no Excel File");
                 }

Также блок try catch более эффективен, чем if и else

0 голосов
/ 04 февраля 2020

Индуцируйте WebDriverWait и ElementExists и используйте ниже xpath.

Вам необходимо установить SeleniumExtras.WaitHelpers pakage из Manage Nuget Packages.

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
string strText=wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementExists(By.XPath("//center[@id='genelUyariCenterTag' and contains(.,'BULUNAMAMIŞTIR')]"))).Text;
    if (strText.Contains("LİSTELENECEK VERİ BULUNAMAMIŞTIR."))
            {
                Console.WriteLine("madde15 there is no Excel");
            }
     else
            {
                Console.WriteLine("madde 15 there is an Excel");
             }

Попробуйте обновить один без WebDriverWait

string strText=driver.FindElement(By.XPath("//center[@id='genelUyariCenterTag' and contains(.,'BULUNAMAMIŞTIR')]")).Text;

            if (strText.Contains("LİSTELENECEK VERİ BULUNAMAMIŞTIR."))
                {
                Console.WriteLine("madde15 there is no Excel");
                }
                else
                {
                Console.WriteLine("madde 15 there is an Excel");
                }
...