145 lines
6.8 KiB
C#
145 lines
6.8 KiB
C#
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;
|
||
}
|
||
}
|
||
}
|
||
}
|