всё работает нормально, если ты сам понимаешь как это ДОЛЖНО работать. как это спроектировать, что за чем должно идти итд...- с этим согласен конечно, проблема в том что многие сейчас считают что можно просто вайбкодить не вникая, обесценивая реальный опыт, а еще есть руководство кампаний, которое не видит разницы.
у тебя банальная нехватка практического опыта- здесь тоже согласен, т.к. столкнулся с ситуацией, когда мой код стал не готов к добавлению нового функционала, а потом я упрямо начал пытаться в srp, плохо понимая как достаточно разделить ответственность и какие именно компоненты нужны, на что потратил много времени, и моя работа перестала приносить быстрые результаты. И нет более старших колег, которые бы поставили бы наиболе точную формулировку конкретной узкой задачи, чтобы я сам пришел к правильному решению и не шел бы не верным путем, или так не бывает и я слишком многого хочу?). А у меня получается что я ответственен за все этапы разработки и задачи сам себе ставлю. В начале это казалось простором для развития, но нет.
проблема ГПТ и гугла, для примера - он почти всегда с тобой соглашается. "подтирает" тебе жопку, "ты такой хороший умный, ах как ты догадался итд..." а в ИТ работе эт зло в чистом виде- здесь тоже согласен, бесит, по-этому я задаю один и тот же вопрос по-разному и иду гуглить сомнительные части из его ответа. Пришел к примерно такому подходу, пишу примерно как в математических учебниках ставится задача:
//Thread.Sleep(3000);
IWebElement? existedRegistry = driver.FindElements(By.XPath("//td[text()='" + currentRegistryNumber + "']")).FirstOrDefault();
if (existedRegistry != null)
{
existedRegistry.Click();
return;
} using IWebElements = System.Collections.ObjectModel.ReadOnlyCollection<OpenQA.Selenium.IWebElement>;
public static class WebDriverExtensions
{
public static IWebElement FindElement(this IWebDriver driver, By by, double timeoutInSeconds)
{
if (timeoutInSeconds > 0)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until<IWebElement>(drv => {
try
{
return drv.FindElement(by);
}
catch
{
return null;
}
});
}
return driver.FindElement(by);
}
// Похоже это работает не так, как мне бы хотелось
public static IWebElements FindElements(this IWebDriver driver, By by, double timeoutInSeconds)
{
if (timeoutInSeconds > 0)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until<IWebElements>(drv => {
try
{
return drv.FindElements(by);
}
catch
{
return null;
}
});
}
return driver.FindElements(by);
}
}private void ClickOnElement(By by, double timeoutInSeconds)
{
IWebElement? element = driver.FindElement(by, timeoutInSeconds);
if (element != null)
{
var fluentWait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
fluentWait.Until(webDriver =>
{
try
{
element.Click();
}
catch (Exception ex)
{
if (ex is StaleElementReferenceException ||
ex is StaleElementReferenceException ||
ex is ElementClickInterceptedException)
{
return false;
}
else
{
throw;
}
}
return true;
});
}
}
Есть какие книги, курсы, которые можете посоветовать по тому, как научиться проектировать?