This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user