如何三次点击python来选择一个段落?

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

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


繁花如伊
浏览 125回答 5
5回答

犯罪嫌疑人X

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 usecaseActionChains(driver).move_to_element(element).perform()js_triple_click(element)print("Tripple click performed")控制台输出:Tripple click performed

青春有我

这将三次单击您在此页面上提出的问题。希望能帮助到你。棘手的部分是 pyautogui 不关心浏览器窗口的位置。from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport pyautoguidriver = webdriver.Firefox(executable_path=r'C:\\Path\\To\\Your\\geckodriver.exe')driver.get('https://stackoverflow.com/questions/63253535/how-to-triple-click-on-python-to-select-a-paragraph')driver.maximize_window()test_paragraph = WebDriverWait(driver, 10).until(    EC.element_to_be_clickable((By.XPATH, "//p[contains(text(), 'Someone please tell me a way to triple-click ')]")))# import time# time.sleep(3)panel_height = driver.execute_script('return window.outerHeight - window.innerHeight;')abs_x = test_paragraph.location['x']y = test_paragraph.location['y']abs_y = y + panel_heightprint("Absolute x : " + str(abs_x))print("Absolute y : " + str(abs_y))pyautogui.moveTo(abs_x + 10, abs_y)pyautogui.click(clicks=3)

撒科打诨

尝试找到两个元素,然后将drag_and_drop与这些元素一起用作命令的源和结尾。下面的代码似乎有效并选择了段落。from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsdriver = webdriver.Chrome()driver.get("https://en.wikipedia.org/wiki/Home")actions = ActionChains(driver)# first element and last element in the paragraphstart = driver.find_element_by_xpath('//*[@id="mw-content-text"]/div/div[1]')end = driver.find_element_by_xpath('//*[@id="mw-content-text"]/div/div[4]')actions.drag_and_drop(start, end).perform()我使用维基百科作为测试,并采用了两行文本的 xpath。脚本选择了中间的段落。所以应该没问题。让我知道

慕侠2389804

您需要导入:from selenium.webdriver.common.action_chains import ActionChains然后你可以试试这个:times = 3while(times >0):            ActionChains(driver).click().perform()            times -= 1;

jeck猫

或者,您可以尝试对其进行硬编码。actions = ActionChains(driver)def triple_click(element_x):    actions.click(element_x).click(element_x).click(element_x).perform()triple_click(your_element)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python