C#
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Interactions;
using System.Diagnostics;
using (IWebDriver driver = new ChromeDriver())
{
driver.Navigate().GoToUrl("http://demoqa.com/sortable");
var elementOne = driver.FindElement(By.CssSelector("#demo-tabpane-list > div > div:nth-child(1)"));
var elementTwo = driver.FindElement(By.CssSelector("#demo-tabpane-list > div > div:nth-child(2)"));
var actionChain = new Actions(driver);
actionChain
.ClickAndHold(elementTwo)
.MoveToElement(elementOne)
.MoveByOffset(0, 10)
.Release()
.Perform();
elementOne = driver.FindElement(By.CssSelector("#demo-tabpane-list > div > div:nth-child(1)"));
elementTwo = driver.FindElement(By.CssSelector("#demo-tabpane-list > div > div:nth-child(2)"));
Debug.Assert(elementOne.Text.ToLower() == "two");
Debug.Assert(elementTwo.Text.ToLower() == "one");
}
Python
from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Chrome('C:\Drivers\chromedriver.exe')
driver.get("http://demoqa.com/sortable")
first_element = driver.find_element_by_css_selector("#demo-tabpane-list > div > div:nth-child(1)")
second_element = driver.find_element_by_css_selector("#demo-tabpane-list > div > div:nth-child(2)")
action_chains = ActionChains(driver)
action_chains.drag_and_drop(second_element, first_element).perform()
first_element = driver.find_element_by_css_selector("#demo-tabpane-list > div > div:nth-child(1)")
second_element = driver.find_element_by_css_selector("#demo-tabpane-list > div > div:nth-child(2)")
assert first_element.text.casefold() == 'two'
assert second_element.text.casefold() == 'one'
driver.close()
driver.quit()
Я использовал документацию из https://selenium-python.readthedocs.io/ и https://www.selenium.dev/selenium/docs/api/dotnet/
Я заметил одну проблему, связанную с версией C#, из-за которой мне пришлось использовать серию действий и убедиться, что элемент находится в немного другом месте для правильной работы. Версия Python этого не требовала.
Я не знал, какую среду модульного тестирования использовать для C#, поэтому я использовал System.Diagnostics.