Python + Selenium ActionChain drag_and_drop在Chorme + MacOS上不起作用

时间:2019-03-11 21:33:29

标签: python selenium google-chrome selenium-webdriver selenium-chromedriver

我一直在尝试使用硒来绕过网站上的滑块验证(而不是破解我的网站,不用担心)

但是以某种方式drag_and_drop功能无法拾取我选择的块。

该块的HTML:

<div class="h-slider-block" style="margin-left: 0px;"></div>

,将块拖动到最右边的位置将是:

<div class="h-slider-block" style="margin-left: 394px;"></div>

以及我用来拖动它的代码:

knob = browser.find_element_by_class_name('h-slider-block')
# ActionChains(browser).drag_and_drop_by_offset(knob, offset, 0).perform()
ActionChains(browser).click_and_hold(knob).move_by_offset(offset, 0).pause(0.5).release().perform()

offset设置为394

代码运行正常,但是据我观察,浏览器未执行任何操作。我在上面尝试了两种组合,但是它们都不起作用。有想法吗?

更新:

Chrome浏览器版本:72.0.3626.121(正式版本)(64位)

ChromeDriver版本:2.46

macOS Mojave 10.14.3

1 个答案:

答案 0 :(得分:0)

我很好奇你为什么在这里使用driver

knob = driver.find_element_by_class_name('h-slider-block')

browser

ActionChains(browser).click_and_hold(knob).move_by_offset(offset, 0).pause(0.5).release().perform()

我不知道您的browser和/或driver是如何定义的,但是如果您在ActionChains中将browser替换为driver,这会有什么不同吗?

ActionChains(driver).click_and_hold(knob).move_by_offset(offset, 0).pause(0.5).release().perform()