Files
work/LC_ConfigCamer/Selenium_Work.cs
T
astankovmi bf51924adb
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 13s
add projects
2026-03-18 15:37:59 +03:00

145 lines
6.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
namespace LC_ConfigCamer
{
internal class Selenium_Work
{
public string[] Ip_list { get; set; }
public string Old_pass { get; set; }
public string New_Pass { get; set; }
FirefoxDriver driver;
public Selenium_Work(string[] ip, string old_pass, string new_pass)
{
Ip_list = ip;
Old_pass = old_pass;
New_Pass = new_pass;
}
public async void Start()
{
FirefoxOptions options = new FirefoxOptions();
//options.AddArgument("-headless");
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService();
service.HideCommandPromptWindow = true;
driver = new FirefoxDriver(Environment.CurrentDirectory, options);
for (int i = 0; i < Ip_list.Count(); i++)
{
driver.Navigate().GoToUrl($"http://{Ip_list[i]}");
await Form1.Log_add($"Открыл Web-интерфейс камеры {Ip_list[i]}");
Thread.Sleep(500);
#region Ввод логин пароль
driver.FindElement(By.XPath("//*[@id=\"username\"]")).SendKeys("admin");
driver.FindElement(By.XPath("//*[@id='password']")).SendKeys(Old_pass);
try
{
driver.FindElement(By.XPath("//*[@id=\"login\"]/table/tbody/tr/td[2]/div/div[5]/button")).Click();
}
catch (Exception)
{
MessageBox.Show("Не нашел XPath кнопки входа");
}
await Form1.Log_add($"Ввел логин и пароль");
Thread.Sleep(2000);
#endregion
if (CheckXPath("/html/body/div[2]/table/tbody/tr/td[2]/div/div[2]/div/label"))
{
await Form1.Log_add($"Не правильный пароль к {Ip_list[i]}", true);
await Form1.Log_add($"===================================", true);
continue;
}
else
{
#region Переход в конфигурацию
driver.Navigate().GoToUrl($"http://{Ip_list[i]}/doc/page/config.asp");
await Form1.Log_add($"Перешел в режим конфигурации");
Thread.Sleep(1000);
#endregion
#region Выбрать пользователя и нажать ИЗМЕНИТЬ
driver.FindElement(By.Name("user")).Click();
await Form1.Log_add($"Перешел в настройки пользователей");
Thread.Sleep(1000);
if (CheckXPath("/html/body/div[4]/div[1]/div/div/div[1]/div/div[1]/div[2]/div/div[2]/div"))
driver.FindElement(By.XPath("/html/body/div[4]/div[1]/div/div/div[1]/div/div[1]/div[2]/div/div[2]/div")).Click();
else
MessageBox.Show("Ткнуть на строку admin");
Thread.Sleep(500);
if (CheckXPath("/html/body/div[4]/div[1]/div/div/div[1]/div/div[1]/div[1]/span[2]/button[2]"))
driver.FindElement(By.XPath("/html/body/div[4]/div[1]/div/div/div[1]/div/div[1]/div[1]/span[2]/button[2]")).Click();
//else if (await CheckXPath("/html/body/div[3]/div[1]/div/div/div[1]/div/div/div[1]/span[2]/button[2]"))
// driver.FindElement(By.XPath("/html/body/div[4]/div[1]/div/div/div[1]/div/div[1]/div[1]/span[2]/button[3]")).Click();
//else if (await CheckXPath("/html/body/div[4]/div[1]/div/div/div[1]/div/div[1]/div[1]/span[2]/button[2]"))
// driver.FindElement(By.XPath("/html/body/div[4]/div[1]/div/div/div[1]/div/div[1]/div[1]/span[2]/button[3]")).Click();
else
MessageBox.Show("Ткнуть изменить");
await Form1.Log_add($"Открыл изменение настроек пользователя");
Thread.Sleep(1000);
#endregion
#region Изменение пароля
if (CheckXPath("/html/body/div[1]/div/table/tbody/tr[2]/td[2]/div/table/tbody/tr[2]/td[2]/div/div[1]/div[4]/div[1]/span[2]/input"))
{
var el = driver.FindElement(By.XPath("/html/body/div[1]/div/table/tbody/tr[2]/td[2]/div/table/tbody/tr[2]/td[2]/div/div[1]/div[4]/div[1]/span[2]/input"));
el.Clear(); el.SendKeys(Old_pass);
await Form1.Log_add($"Ввел старый пароль");
}
else
{
MessageBox.Show("Ввод старого пароля");
}
if (CheckXPath("/html/body/div[1]/div/table/tbody/tr[2]/td[2]/div/table/tbody/tr[2]/td[2]/div/div[1]/div[4]/div[2]/span[2]/input"))
{
var el = driver.FindElement(By.XPath("/html/body/div[1]/div/table/tbody/tr[2]/td[2]/div/table/tbody/tr[2]/td[2]/div/div[1]/div[4]/div[2]/span[2]/input"));
el.Clear(); el.SendKeys(New_Pass);
el = driver.FindElement(By.XPath("/html/body/div[1]/div/table/tbody/tr[2]/td[2]/div/table/tbody/tr[2]/td[2]/div/div[1]/div[4]/div[4]/span[2]/input"));
el.Clear(); el.SendKeys(New_Pass);
await Form1.Log_add($"Ввел 2 раза новый пароль");
}
else
{
MessageBox.Show("Ввод нового пароля");
}
driver.FindElement(By.XPath("//html/body/div[1]/div/table/tbody/tr[2]/td[2]/div/table/tbody/tr[3]/td/div/button[1]")).Click();
await Form1.Log_add($"Сохранил изменения.");
await Form1.Log_add($"===================================");
#endregion
continue;
}
}
driver.Quit();
}
private bool CheckXPath(string xPath)
{
try
{
_ = driver.FindElement(By.XPath(xPath));
return true;
}
catch (Exception)
{
return false;
}
}
}
}