При нажатии на button на веб-странице появляется стандартное окно загрузки файла. Интересует самый универсальный способ, подходящий под большинство сайтов.
wd.FindElement(By.XPath("//button[.='Загрузить фото']")).Click();
new Actions(wd).SendKeys(@"C:\000.jpg").Build().Perform();
new Actions(wd).SendKeys(OpenQA.Selenium.Keys.Enter).Build().Perform();
Пробовал так, но не работает.
Вообще, SeleniumWebDriver не поддерживает работу с любого рода системными диалогами. Так что в любом случае нужно делать какой-то костыль для реализации этого.
Нам неизвестно что за сайт и какой костыль возможно использовать для конкретно твоего случая.
1. Если поле адреса видимоеHTML
<input type="file" id="uploadhere" />
Selenium Code
IWebElement element = driver.FindElement(By.Id("uploadhere"));
element.SendKeys("C:\\Some_Folder\\MyFile.txt");
2. Если поле адреса НЕвидимое
public void AttachFile(WebDriver driver, By locator, String file) {
WebElement input = driver.findElement(locator);
Unhide(driver, input);
input.sendKeys(file);
}
private void Unhide(WebDriver driver, WebElement element) {
String script = "arguments[0].style.opacity=1;"
+ "arguments[0].style['transform']='translate(0px, 0px) scale(1)';"
+ "arguments[0].style['MozTransform']='translate(0px, 0px) scale(1)';"
+ "arguments[0].style['WebkitTransform']='translate(0px, 0px) scale(1)';"
+ "arguments[0].style['msTransform']='translate(0px, 0px) scale(1)';"
+ "arguments[0].style['OTransform']='translate(0px, 0px) scale(1)';"
+ "return true;";
((JavascriptExecutor) driver).executeScript(script, element);
}
3. Универсальный способ
Анализ трафика и реализации POST реквеста в котором будет аплоадится картинка.
4. Использовать эту библиотеку:https://github.com/ukushu/DialogCapabilities
5. И САМЫЙ ПРАВИЛЬНЫЙ ДЛЯ ДАНОГО СЛУЧАЯвообще забить на использование Selenium для этих задач и использьовать Instagram API.
Который не так давно заимел поддержку аплоада картинок: https://developers.facebook.com/docs/instagram-api/content-publishing
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть коллекция объектов, у каждого их которых есть свойство ParentIdЕсть ListBox, к которому привязана эта коллекция объектов
Нужен совет реализации след структуры1) форма 2) поток с таймером
Как проверить что в тексте каждый '(' закрыт ')'?