javascript - 如何在python上三次单击以选择一个段落?

标签 javascript python selenium selenium-webdriver mouseevent

有人请告诉我一种三次单击 selenium python 的方法。我尝试了这个和其他的东西,但没有奏效。

for x in range(3)
   actions.click()

最佳答案

Selenium 的当前实现不提供任何方式来执行三次点击。然而,一种可行的方法是使用 execute_script() 模拟所需的鼠标事件。方法如下:

def  js_triple_click(element, deltaY = 60, offsetX = 0, offsetY = 0):
    driver.execute_script("""
      "var target = arguments[0];                                 " +
      "var offsetX = arguments[1];                                " +
      "var offsetY = arguments[2];                                " + 
      "var rect = target.getBoundingClientRect();                 " +
      "var cx = rect.left + (offsetX || (rect.width / 2));        " +        
      "var cy = rect.top + (offsetY || (rect.height / 2));        " +
      "                                                           " +
      "emit('mousedown', {clientX: cx, clientY: cy, buttons: 1}); " +
      "emit('mouseup',   {clientX: cx, clientY: cy});             " +
      "emit('mousedown', {clientX: cx, clientY: cy, buttons: 1}); " +
      "emit('mouseup',   {clientX: cx, clientY: cy});             " +
      "emit('mousedown', {clientX: cx, clientY: cy, buttons: 1}); " +
      "emit('mouseup',   {clientX: cx, clientY: cy});             " +
      "emit('click',     {clientX: cx, clientY: cy, detail: 3});  " +
      "                                                           " +
      "function emit(name, init) {                                " +
    "target.dispatchEvent(new MouseEvent(name, init));        " +
      "}                                                          " ;
    """)

element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.TAG_NAME, "p"))) # replace the locator as per your usecase
ActionChains(driver).move_to_element(element).perform()
js_triple_click(element)
print("Tripple click performed")
控制台输出:
Tripple click performed

关于javascript - 如何在python上三次单击以选择一个段落?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63253535/

相关文章:

python - C 中的 Numpy 数组

java - 在使用 Cucumber 和 JUnit 时,如何截取屏幕截图并将其附加到 Allure 报告中?

java - Selenium /网络驱动程序 : firefox/chrome browser opens but times out

JavaScript 正则表达式 : Get everything from inside/tags

javascript - 为什么我会在 gulp 中得到 "task completion callback called too many times"?

javascript - 过滤范围之间的数据

c# - IE Web 驱动程序在 TeamCity Windows Server 2012 上运行速度慢 3-5 倍

javascript 对象、数组、JSON

python - 使用 OAuth2 在 gspread 中使用 python 进行授权的问题

python - Apache 从 django 项目加载 x.wsgi 文件,没有关联的 __file__ 属性