Я использую селен с java (последний для обоих). Попытка рисовать на небольшой области холста внутри модального окна в нашем веб-приложении. Библиотека, которую мы использовали для нашего холста, называлась «signature pad js». Я подтвердил, что это не внутри iframe или чего-то сложного, что может быть проблемой (это просто обычный div.modal-body с элементом холста div.signature-input).
Но это ничего не делает. Просмотрел много сообщений здесь, в stackoverflow, и большинство из них кажутся довольно идентичными с несколькими вариантами, которые нужно попробовать (я пробовал их все).
Вот последний код, который я пробовал: // Рисуем какую-то подпись
Элемент WebElement = driver.findElement(Using.locator(SIGNATURE_AREA)); // элемент холста
Конструктор действий = новые действия (драйвер); builder.clickAndHold(элемент).moveByOffset(10, 50). двигаться по смещению (50,10). MoveByOffset(-10,-50). moveByOffset(-50,-10).release().perform();
Я пробовал всевозможные смещения, и все безрезультатно. Если у кого-то есть опыт с этим, очень хотелось бы руки.





Я думаю, что ваша проблема в коде, я сделал это с ruby, и это сработало нормально. Код в Ruby ниже (работает в FireFox)
driver.find_element(:xpath, "html/body/div[1]/div[5]/div[2]/canvas").click
element = driver.find_element(:xpath, "html/body/div[1]/div[5]/div[2]/canvas");
driver.action.move_to(element).perform
driver.action.click_and_hold(element).perform
driver.action.move_by(150, 50).click.perform
driver.action.move_to(element).perform
driver.action.click_and_hold(element).perform
driver.action.move_by(100, 50).click.perform
driver.action.move_to(element).perform
driver.action.click_and_hold(element).perform
driver.action.move_by(300, 10).click.perform
sleep (5)
Итак, я попробовал то же самое, используя Java для вас, и он работает нормально, он рисует две строки, как и ожидалось. Хитрость заключается в том, что перемещение не должно сопровождаться щелчком мыши, иначе оно потеряет фокус. Ниже код отлично работает в java и chrome. Я использовал https://sketchtoy.com/ для рисования на холсте
public class BrowserTesting {
WebDriver driver;
@Test
public void test1() throws InterruptedException {
//WebDriverManager.chromedriver().setup();
System.setProperty("webdriver.chrome.driver","C:\\Users\\pathtyourchrome\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
//disable automation info bar
options.addArguments("disable-infobars");
driver = new ChromeDriver(options);
driver.get("https://sketchtoy.com/");
WebElement element = driver.findElement(By.xpath("//div[@class='sketch-canvas-container']/canvas"));//canvas element
Actions builder = new Actions(driver);
builder.moveToElement(element).perform();
builder.clickAndHold(element).perform();
builder.moveByOffset(150, 50).perform();
builder.moveToElement(element).perform();
builder.clickAndHold(element).perform();
builder.moveByOffset(100, 50).perform();
builder.moveToElement(element).perform();
Thread.sleep(5000);
//driver.quit();
}
}
См. этот снимок экрана для рисунка: 
Дайте мне знать, если это сработало!
ваш код, вам нужно перейти к элементу, щелкнуть и удерживать, а затем перейти
Это не имеет значения, я пробовал много комбинаций действий, ни одно из них не оставило ни одной точки на холсте.
например Конструктор действий = новые действия (драйвер); builder.moveToElement(элемент).clickAndHold(элемент).moveByOffset(1, 1).moveByOffset(2, 2).release().build().perform();
Я попробую.
У меня не сработало (не влияет на холст). На данный момент я думаю сдаться. Мне удалось поставить одну точку на холст, просто используя element.click(); что, вероятно, достаточно для моих усилий по тестированию.
Вы можете поделиться URL-адресом приложения или его частным приложением?
Это частное приложение, поэтому, к сожалению, я не могу разглашать логины.
Проблема в каком коде извините? МОЙ код или код приложения?