关于Selenium的原理分析,网上很多,推荐下面的博客
http://blog.csdn.net/ant_ren/article/details/7970793
在此不多描述。
下面基于Selenium 3.3.1, 分析下API,
在文件下common/exception.py定义了webdriver 的异常类型,继承于内置类Exception,后面的大多继承于此类:
class WebDriverException(Exception): def __init__(self, msg=None, screen=None, stacktrace=None): def __str__(self): class ErrorInResponseException(WebDriverException): class InvalidSwitchToTargetException(WebDriverException): class NoSuchFrameException(InvalidSwitchToTargetException):.....................................重点类WebDriver实现在webdriver/remote/webdriver.py中实现, 但我们一般不直接用这个,用的是具体浏览器继承它的类。
里面经常用到的方法:
打开网页:
def get(self, url): """ Loads a web page in the current browser session. """ self.execute(Command.GET, {'url': url})执行命令:
def execute(self, driver_command, params=None):
找element: find_element.....
查看request返回值,如果是ELEMENT,就创建一个webelement实例,并返回.
我比较喜欢的是:
def find_element(self, by=By.ID, value=None):
比如find_element(“xpath”, "actual xpath")
对window的操作:
对cookies:的操作:
screenshot操作:
各浏览器的WebDriver类在webdriver/chrome(各浏览器名字)/webdriver.py下:
class WebDriver(RemoteWebDriver): def __init__(self, executable_path= def launch_app(self, id): def quit(self): def create_options(self):