#javascript #reactjs #selenium #selenium-webdriver #electron
Вопрос:
Я пытаюсь написать тест для электронного приложения, которое проверяет функцию перетаскивания. Я пробовал два разных метода. Собственный метод перетаскивания Webdriver, а также с помощью перформакций. Однако в обоих случаях, похоже, ничего не происходит. Элемент, похоже, не перемещается, хотя он будет работать нормально, если я перетащу его вручную при использовании приложения. В настоящее время я использую:
«react-beautiful-dnd»: «^13.1.0», «electron»: «^9.4.3», «electron-chromedriver»: «^11.0.0», «мокко»: «^8.2.1», «react»: «^16.4.0», «selenium-webdriver»: «^4.0.0-бета.1», «spectron»: «^11.0.0», «spectron-ключи»: «0.0.1»,
Вот как выглядит тест, когда я использую выполнение действий:
it('should display the correct string when the rows are dragged and dropped in a different order', async () => {
const correctString = '"Field3": Value3^4 amp; "Field1": Value1^2 amp; "Field2": Value2^3'
const target = await app.client.$('[id="search_input"]');
const sourceElement = await app.client.$('[id="row_1"]');
//function to get coordinates of the source element and the target.
const getCoordsForElement = async (elementId) => {
const rect = await app.client.getElementRect(elementId);
const X = parseInt(rect.x (rect.width / 2), 10);
const Y = parseInt(rect.y (rect.height / 2), 10);
return [X, Y];
};
const [sourceX, sourceY] = await getCoordsForElement(sourceElement.elementId)
const [targetX, targetY] = await getCoordsForElement(target.elementId)
const [diffX, diffY] = [targetX - sourceX, targetY - sourceY]
await app.client.performActions([{
type: 'pointer',
id: 'finger1',
parameters: { pointerType: 'mouse' },
actions: [
{ type: 'pointerMove', duration: 0, x:sourceX , y:sourceY },
{ type: 'pointerDown', button: 1 },
{ type: 'pause', duration: 500 },
{ type: 'pointerMove', duration: 1000, origin: "pointer", x: diffX, y: diffY },
{ type: 'pointerUp', button: 1 }
]
}]);
await app.client.pause(1000)
const text = await searchInput.getValue()
console.log("TEXT: ", text)
assert.strictEqual(text, correctString, `Expected the correct string to be "${correctString}". Instead it was "${text}".`)
})
И вот как выглядит тест, когда я пытаюсь использовать метод drapAndDrop:
it('should display the correct string when the rows are dragged and dropped in a different order', async () => {
const correctString = '"Field3": Value3^4 amp; "Field1": Value1^2 amp; "Field2": Value2^3'
const target = await app.client.$('[id="search_input"]');
const sourceElement= await app.client.$('[id="row_1"]');
await sourceElement.dragAndDrop({x: -247, y: -210})
await app.client.pause(1000)
const text = await searchInput.getValue()
console.log("TEXT: ", text)
assert.strictEqual(text, correctString, `Expected the correct string to be "${correctString}". Instead it was "${text}".`)
})