首先来看一下 selenium.webdriver 下面有哪些属性,这里用狐火浏览器 Firefox 来说明:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
print(dir(driver)) # 查看所有的属性
运行结果:
['CONTEXT_CHROME', 'CONTEXT_CONTENT', 'NATIVE_EVENTS_ALLOWED', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_file_detector', '_is_remote', '_mobile', '_switch_to', '_unwrap_value', '_web_element_cls', '_wrap_value', 'add_cookie', 'application_cache', 'back', 'binary', 'capabilities', 'close', 'command_executor', 'context', 'create_web_element', 'current_url', 'current_window_handle', 'delete_all_cookies', 'delete_cookie', 'desired_capabilities', 'error_handler', 'execute', 'execute_async_script', 'execute_script', 'file_detector', 'file_detector_context', 'find_element', 'find_element_by_class_name', 'find_element_by_css_selector', 'find_element_by_id', 'find_element_by_link_text', 'find_element_by_name', 'find_element_by_partial_link_text', 'find_element_by_tag_name', 'find_element_by_xpath', 'find_elements', 'find_elements_by_class_name', 'find_elements_by_css_selector', 'find_elements_by_id', 'find_elements_by_link_text', 'find_elements_by_name', 'find_elements_by_partial_link_text', 'find_elements_by_tag_name', 'find_elements_by_xpath', 'firefox_profile', 'forward', 'fullscreen_window', 'get', 'get_cookie', 'get_cookies', 'get_log', 'get_screenshot_as_base64', 'get_screenshot_as_file', 'get_screenshot_as_png', 'get_window_position', 'get_window_rect', 'get_window_size', 'implicitly_wait', 'install_addon', 'log_types', 'maximize_window', 'minimize_window', 'mobile', 'name', 'orientation', 'page_source', 'profile', 'quit', 'refresh', 'save_screenshot', 'service', 'session_id', 'set_context', 'set_page_load_timeout', 'set_script_timeout', 'set_window_position', 'set_window_rect', 'set_window_size', 'start_client', 'start_session', 'stop_client', 'switch_to', 'switch_to_active_element', 'switch_to_alert', 'switch_to_default_content', 'switch_to_frame', 'switch_to_window', 'title', 'uninstall_addon', 'w3c', 'window_handles']
红色加粗的部分是常用的。
常用的方法说明:
-
idriver.find_element_by_id() #通过id来查找元素
-
driver.find_element_by_name() #通过name来查找元素
-
driver.find_element_by_class_name() #通过类名查找元素
-
driver.find_element_by_link_text() #通过某个超链接的文本字符进行查找元素
-
driver.find_element_by_partial_link_text() # 通过部分文字链接查找元素
-
driver.find_element_by_xpath()#通过路径定位
-
driver.find_element_by_css_selector()#通过选择器定位
-
driver.find_element_by_tag_name())#通过标签名定位
-
driver.find_elements_by_xx 定位元素,返回一个列表
-
driver.current_url 用于获得当前页面的URL
-
driver.title 用于获取当前页面的标题
-
driver.page_source 用于获取页面html源代码
-
driver.current_window_handle 用于获取当前窗口句柄
-
driver.window_handles 用于获取所有窗口句柄
-
driver.get(url) 浏览器加载url。
-
driver.switch_to_frame(id,name属性值,句柄号) 切换到新表单(同一窗口)。若无id或属性值,可先通过定位方法定位到 iframe,再将值传给 switch_to_frame()
-
driver.switch_to_window(窗口句柄) 切换到新窗口
-
driver.execute_script(js) 执行js脚本命令
-
driver.find_element(By.ID,'xxx') # by 定位,返回元素
-
driver.find_elements('id','xxx') # by 定位,返回列表
-
driver.get_cookies() 返回当前会话中的cookies,返回列表
-
driver.add_cookie({}) # 当登录功能需要验证码时,我们可以使用driver.add_cookie()方法跳过验证码
-
driver.get_cookie('name') # 按名称获取一个cookie。如果找到则返回cookie,如果没有则返回None。