Python selenium - 没有任何 iframe 的拖放滑动条
Python selenium - drag and drop slide bar without any iframe
我正在 seleniumeasy.com 上练习我的测试自动化
我到达拖放滑动条但无法弄清楚如何将条值从 10 移动到 80。
这是我写但失败的代码:
drag_ten = driver.find_element_by_xpath("//input[@value=10]")
drop_eighty = driver.find_element_by_xpath("//input[@value=80]")
ActionChains(driver).drag_and_drop(drag_ten, drop_eighty).perform()
任何帮助将不胜感激。
一个滑块仍然是一个单独的网络元素。当您向左或向右移动滑块时,只有该元素的属性值会发生变化。因此,在您的代码中,drop_eighty 在执行时将是未定义的。
您可以使用 drag_and_drop_by_offset 或 click_and_hold 并指定滑动滑块的偏移量
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get('https://www.seleniumeasy.com/test/drag-drop-range-sliders-demo.html')
slider = driver.find_element_by_xpath('//div[@id="slider1"]//input')
ActionChains(driver).drag_and_drop_by_offset(slider, 250, 0).perform()
# Alternative: ActionChains(driver).click_and_hold(slider).move_by_offset(250, 0).release().perform()
然而,找到一个合适的偏移值并不是那么简单。它也可能因 window 大小而异。有一些方法可以计算它,但它会使答案过于复杂。
在这种情况下,更简单的选择是使用 JavascriptExecutors execute_script 方法更改值,然后触发 onchange 侦听器。此选项使用更有意义的值,但它特定于您的滑块实现,需要针对任何其他滑块实现进行调整。
driver.execute_script('arguments[0].value = 80;', slider)
driver.execute_script('arguments[0].onchange();', slider)
我正在 seleniumeasy.com 上练习我的测试自动化 我到达拖放滑动条但无法弄清楚如何将条值从 10 移动到 80。 这是我写但失败的代码:
drag_ten = driver.find_element_by_xpath("//input[@value=10]")
drop_eighty = driver.find_element_by_xpath("//input[@value=80]")
ActionChains(driver).drag_and_drop(drag_ten, drop_eighty).perform()
任何帮助将不胜感激。
一个滑块仍然是一个单独的网络元素。当您向左或向右移动滑块时,只有该元素的属性值会发生变化。因此,在您的代码中,drop_eighty 在执行时将是未定义的。
您可以使用 drag_and_drop_by_offset 或 click_and_hold 并指定滑动滑块的偏移量
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get('https://www.seleniumeasy.com/test/drag-drop-range-sliders-demo.html')
slider = driver.find_element_by_xpath('//div[@id="slider1"]//input')
ActionChains(driver).drag_and_drop_by_offset(slider, 250, 0).perform()
# Alternative: ActionChains(driver).click_and_hold(slider).move_by_offset(250, 0).release().perform()
然而,找到一个合适的偏移值并不是那么简单。它也可能因 window 大小而异。有一些方法可以计算它,但它会使答案过于复杂。
在这种情况下,更简单的选择是使用 JavascriptExecutors execute_script 方法更改值,然后触发 onchange 侦听器。此选项使用更有意义的值,但它特定于您的滑块实现,需要针对任何其他滑块实现进行调整。
driver.execute_script('arguments[0].value = 80;', slider)
driver.execute_script('arguments[0].onchange();', slider)