python - 使用 drag_and_drop_by_offset 时抓取光标(Python/Selenium)

标签 python selenium

我需要拖动这个秤enter image description here当我运行这段代码时:

HandScale = browser.find_element_by_xpath('//*[@data-xform="scale"]')
GridLineX = browser.find_element_by_class_name('outlined')
bottomLeft = browser.find_element_by_class_name('bottomLeft')
print GridLineX.size
action_chains = ActionChains(browser)
action_chains.drag_and_drop_by_offset(HandScale, 30, 30).click_and_hold(HandScale).perform()

它仍然具有此处显示的抓取效果: enter image description here

在运行我的脚本的其他部分之前,是否有办法移除这个效果?

最佳答案

我认为您只需要 action_chains 中的 release() 函数,它就是专门为执行此操作而设计的。要在当前文件末尾添加的行是:

action_chains.release().perform()

在反馈这不起作用后进行编辑:如果您在现有的 action_chains 中执行 release(),然后简单地添加click_and_hold(HandScale) 之后的 pause() 以便实际保持点击而不是立即释放。最后,由于您在 click_and_hold(HandScale) 中使用了 webelement 参数,因此我会尝试使用 release(HandScale) 释放该元素。因此,如果您使用以下内容,您的 action_chains 可能会执行您想要的操作:

 action_chains.drag_and_drop_by_offset(HandScale, 30, 30).click_and_hold(HandScale).pause(5).release(HandScale).perform()

如果 THAT 不起作用,WebDriver API 有一个名为 reset_actions() 的方法,根据文档“清除已经存储在本地和远端”。我会在您当前的 action_chains 下添加它,但您可以尝试在当前代码中的 perform() 之前插入它。要添加的行看起来像这样:

action_chains.reset_actions().perform()

如果这些都不适合你,你可以试试

driver.execute_script("arguments[0].removeAttribute('cursor')", element")

如果您需要,我认为可以帮助您确定在上述方法均无效的情况下要执行的操作。

关于python - 使用 drag_and_drop_by_offset 时抓取光标(Python/Selenium),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55172446/

相关文章:

python - 多处理提前退出

Python:无法使用 super() 调用父类析构函数

python - 如何根据scrapy中本周的日期获取上周作为开始日期和结束日期

css - 使用 ANT 运行框架时单击 CSS 菜单

ruby - capybara :如何在没有 'id' 的情况下填充文本区域?

python - 分类数据的矢量量化

python - Python 中的列联表

google-chrome - Chrome 无法使用 chromedriver2.9 在 CentOS 上启动

selenium - 自动关闭 Apple id 验证弹出窗口

java - 使用 dataprovider 的 TestNG 并行测试/方法