selenium 速查手册

    xiaoxiao2024-01-19  186

    本文有原创部分有转载部分,目的是方便自己和各位网友查询使用 侵删!侵删!侵删!侵删!

    速查手册

    常用方法总结

    先引入包

    import subprocess from selenium import webdriver from selenium.webdriver.chrome.options import Options #引入Chrome选项 from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys

    创建实例

    command = "\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\" --remote-debugging-port=9222 --user-data-dir=C:\chrome_profile" retcode = subprocess.Popen(command,shell=True) chrome_options = Options() chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") driver = webdriver.Chrome(options=chrome_options)

    driver方法

    先贴出dir()全部方法:

    方法名方法名方法名方法名add_cookieapplication_cachebackcapabilitiesclosecommand_executorcreate_optionscreate_web_elementcurrent_urlcurrent_window_handledelete_all_cookiesdelete_cookiedesired_capabilitieserror_handlerexecuteexecute_async_scriptexecute_cdp_cmdexecute_scriptfile_detectorfile_detector_contextfind_elementfind_element_by_class_namefind_element_by_css_selectorfind_element_by_idfind_element_by_link_textfind_element_by_namefind_element_by_partial_link_textfind_element_by_tag_namefind_element_by_xpathfind_elementsfind_elements_by_class_namefind_elements_by_css_selectorfind_elements_by_idfind_elements_by_link_textfind_elements_by_namefind_elements_by_partial_link_textfind_elements_by_tag_namefind_elements_by_xpathforwardfullscreen_windowgetget_cookieget_cookiesget_logget_network_conditionsget_screenshot_as_base64get_screenshot_as_fileget_screenshot_as_pngget_window_positionget_window_rectget_window_sizeimplicitly_waitlaunch_applog_typesmaximize_windowminimize_windowmobilenameorientationpage_sourcequitrefreshsave_screenshotservicesession_idset_network_conditionsset_page_load_timeoutset_script_timeoutset_window_positionset_window_rectset_window_sizestart_clientstart_sessionstop_clientswitch_toswitch_to_active_elementswitch_to_alertswitch_to_default_contentswitch_to_frameswitch_to_windowtitlew3cwindow_handles

    有精力在逐个解释吧…

    元素定位速查

    定义一个页面中的元素: find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_element_by_tag_name find_element_by_class_name find_element_by_css_selector 下面是查找多个元素(这些方法将返回一个列表): find_elements_by_name find_elements_by_xpath find_elements_by_link_text find_elements_by_partial_link_text find_elements_by_tag_name find_elements_by_class_name find_elements_by_css_selector

    元素方法

    PS:如果需要输入中文,防止编码错误使用send_keys(u"中文用户名")。 完整方法列表可用 dir(element)来查看

    常用操作方法:

    clear 清除元素的内容send_keys 模拟按键输入click 点击元素submit 提交表单

    WebElement接口获取值

    size 获取元素的尺寸text 获取元素的文本get_attribute(name) 获取属性值location 获取元素坐标,先找到要获取的元素,再调用该方法page_source 返回页面源码driver.title 返回页面标题current_url 获取当前页面的URLis_displayed() 设置该元素是否可见s_enabled() 判断元素是否被使用is_selected() 判断元素是否被选中tag_name 返回元素的tagName

    键盘操作

    参考文档: 7. WebDriver API — Selenium-Python中文文档 2 documentation Selenium常见元素定位方法和操作的学习介绍 - 杨秀璋的专栏 - 博客

    前面讲述了鼠标操作,现在讲述键盘操作。在webdriver的Keys类中提供了键盘所有的按键操作,当然也包括一些常见的组合键操作如Ctrl+A(全选)、Ctrl+C(复制)、Ctrl+V(粘贴)。更多键参考官方文档对应的编码。

    send_keys(Keys.ENTER) 按下回车键send_keys(Keys.TAB) 按下Tab制表键send_keys(Keys.SPACE) 按下空格键spacesend_keys(Kyes.ESCAPE) 按下回退键Escsend_keys(Keys.BACK_SPACE) 按下删除键BackSpacesend_keys(Keys.SHIFT) 按下shift键send_keys(Keys.CONTROL) 按下Ctrl键send_keys(Keys.ARROW_DOWN) 按下鼠标光标向下按键send_keys(Keys.CONTROL,‘a’) 组合键全选Ctrl+Asend_keys(Keys.CONTROL,‘c’) 组合键复制Ctrl+Csend_keys(Keys.CONTROL,‘x’) 组合键剪切Ctrl+Xsend_keys(Keys.CONTROL,‘v’) 组合键粘贴Ctrl+V

    ActionChains 鼠标操作

    原文地址:https://www.cnblogs.com/yoyoketang/p/8711367.html actionchains是selenium里面专门处理鼠标相关的操作如:鼠标移动,鼠标按钮操作,按键和上下文菜单(鼠标右键)交互。 这对于做更复杂的动作非常有用,比如悬停和拖放。

    actionchains也可以和快捷键结合起来使用,如ctrl,shif,alt结合鼠标一起使用

    当你使用actionchains对象方法,行为事件是存储在actionchains对象队列。当你使用perform(),事件按顺序执行。

    方法一:可以写一长串 menu = driver.find_element_by_css_selector(".nav") hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1") ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform() 方法二:可以分几步写 menu = driver.find_element_by_css_selector(".nav") hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1") actions = ActionChains(driver) actions.move_to_element(menu) actions.click(hidden_submenu) actions.perform()

    无论哪种方式,操作都是按照调用的顺序执行挨个执行!

    方法介绍

    1.以下提到的Keys类,是selenium里面的键盘事件类,导入方法:

    from selenium.webdriver.common.keys import Keys

    2.鼠标事件使用导入方法:

    from selenium.webdriver.common.action_chains import ActionChains

    class ActionChains(object): def __init__(self, driver): self._driver = driver self._actions = [] def perform(self): # 执行行为事件 def click(self, on_element=None): 点击: - 如果参数不写,那么点击的是当前鼠标位置 - 如果参数写定位到的元素对象element,那就是点这个元素 def click_and_hold(self, on_element=None): 鼠标左键按住某个元素 - 如果参数不写,那么点的是当前鼠标位置 - 如果参数写定位到的元素对象element,那就是点这个元素 def context_click(self, on_element=None): 鼠标右键点击 - 如果参数不写,那么点的是当前鼠标位置 - 如果参数写定位到的元素对象element,那就是点这个元素 def double_click(self, on_element=None): 双击鼠标 - 如果参数不写,那么点的是当前鼠标位置 - 如果参数写定位到的元素对象element,那就是点这个元素 def drag_and_drop(self, source, target): 按住源元素上的鼠标左键,然后移动到目标元素并释放鼠标按钮 - source: 按住鼠标的元素位置 - target: 松开鼠标的元素位置 def drag_and_drop_by_offset(self, source, xoffset, yoffset): 按住源元素上的鼠标左键,然后移动到目标偏移量并释放鼠标按钮。 - source: 按住鼠标的元素位置 - xoffset: X 轴的偏移量 - yoffset: Y 轴的偏移量 def key_down(self, value, element=None): 只发送一个按键,而不释放它。只应用于修饰键(控制、alt和shift)。 - value: 要发送的修饰符键。值在“Keys”类中定义。 - element: 定位的元素 如果element参数不写就是当前鼠标的位置 举个例子,按住 ctrl+c:: ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform() def key_up(self, value, element=None): # 释放按键,配合上面的一起使用 def move_by_offset(self, xoffset, yoffset): 将鼠标移动到当前鼠标位置的偏移量 - xoffset: X轴 作为一个正整数或负整数移动到x偏移量 - yoffset: Y轴 偏移,作为正整数或负整数。 def move_to_element(self, to_element): 鼠标悬停 - to_element: 定位需要悬停的元素 def move_to_element_with_offset(self, to_element, xoffset, yoffset): 通过指定元素的偏移量移动鼠标。偏移量与元素的左上角相对 - to_element: 定位需要悬停的元素 - xoffset: X 轴偏移量 - yoffset: Y 轴偏移量 def release(self, on_element=None): 释放一个元素上的鼠标按钮。 - 如果参数不写,那么是当前鼠标位置 - 如果参数写定位到的元素对象element,那就是这个元素. def send_keys(self, *keys_to_send): 发送到当前焦点元素 要发送的按键。修饰符键常数可以在“Keys”类。 def send_keys_to_element(self, element, *keys_to_send): 发送到定位到的元素上 - element: 定位的元素 - keys_to_send: 要发送的按键。修饰符键常数可以在“Keys”类。

    举个案例

    1.实现Ctrl +F5 的组合键功能

    # coding:utf-8 # 作者:上海-悠悠 from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys import time driver = webdriver.Firefox() driver.get("https://www.baidu.com") time.sleep(3) # 实现Ctrl+F5刷新 ActionChains(driver).key_down(Keys.CONTROL).send_keys(Keys.F5).key_up(Keys.CONTROL).perform()
    最新回复(0)