python - 我正在尝试使用 Python 和 Selenium 拖放多个 jQuery 列表元素
问题描述
我正在尝试使用 Python 和 Selenium 拖放多个元素。
我有一个<li>
元素<ul>
,我需要在另一个元素下移动<li>
...
第一步效果很好,但是接下来的动作出现了一些魔力,我想更改网页中项目的顺序。
这是我的python代码
from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Chrome()
driver.get("https://jqueryui.com/sortable/")
print(driver.title)
move = ActionChains(driver)
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
item1= driver.find_element_by_xpath("//ul[@id='sortable']/li[text()='Item 3']")
before_y = item1.location.get('y')
item_height = item1.size.get('height')
move.drag_and_drop_by_offset(item1,0,item_height+10).perform()
item2= driver.find_element_by_xpath("//ul[@id='sortable']/li[text()='Item 1']")
before_y = item2.location.get('y')
item_height = item2.size.get('height')
move.drag_and_drop_by_offset(item2,0,item_height+10).perform()
item1= driver.find_element_by_xpath("//ul[@id='sortable']/li[text()='Item 3']")
before_y = item1.location.get('y')
item_height = item1.size.get('height')
move.drag_and_drop_by_offset(item1,0,item_height+10).perform()
我的最终目标是将这些项目排序为 [2,3,1,5,6,4,7]或任何其他顺序
解决方案
基于这个答案 - https://stackoverflow.com/a/40171414/16452840最后申请.perform
就足够了。它只拖了Element
一次。
item1= driver.find_element_by_xpath("//ul[@id='sortable']/li[text()='Item 3']")
before1 = item1.location.get('y')
item_height = item1.size.get('height')
move.drag_and_drop_by_offset(item1,item_height,item_height+10)
time.sleep(5)
item2= driver.find_element_by_xpath("//ul[@id='sortable']/li[text()='Item 1']")
before2 = item2.location.get('y')
item_height = item2.size.get('height')
move.drag_and_drop_by_offset(item2,0,item_height+10)
time.sleep(5)
item1= driver.find_element_by_xpath("//ul[@id='sortable']/li[text()='Item 3']")
before_y = item1.location.get('y')
item_height = item1.size.get('height')
move.drag_and_drop_by_offset(item1,0,item_height+10).perform()
推荐阅读
- google-places-api - Google Places API 自动完成 我们可以重复使用会话令牌吗?
- c++ - CMAKE_CXX_COMPILER_VERSION 指向旧的 GCC 版本
- java - 记录大字符串会导致 OutOfMemoryError
- ios - 如何在 Swift 中保存增量
- excel - Office 加载项 Excel VSTO office 365(桌面)支持
- vb.net - 表单加载时 DataGridView 不会自动出现
- javascript - 动态多表单:根据先前的选择值更改选择选项
- reactjs - 在 React js 中堆叠样式
- merge - 将合并冲突导出为 Excel 文件
- airflow - Airflow 中的临时跳过任务