Home » Uncategorized » Python_Selenium操作Firefox浏览器

Python_Selenium操作Firefox浏览器

https://github.com/mozilla/geckodriver/releases

一、打开网址

方法说明:webdriver.Firefox()用于创建一个火狐浏览器的webdriver

driver.get(url)用户打开固定的网址

实例如下:

1
2
3
self.driver = webdriver.Firefox(executable_path = 'D:\\python+Selenium\\geckodriver.exe')
        self.url = u"https://www.baidu.com"
        self.driver.get(self.url)

二、最大化浏览器、设置浏览器大小

方法说明:driver.maximize_window()用于最大化浏览器

driver.set_window_size()用于设置浏览器的大小,以像素为单位

实例如下:

1
2
self.driver.maximize_window() 
self.driver.set_window_size(480800)    

三、浏览器前进、后退

方法说明:driver.back()用于浏览器后退操作

driver.forward()用于浏览器前进操作

1
2
3
4
5
6
7
8
9
10
11
12
def setUp(self):
        self.driver = webdriver.Firefox(executable_path = 'D:\\python+Selenium\\geckodriver.exe')
        self.url = u"https://www.baidu.com"
        self.driver.get(self.url)
 def testBrowser(self):
        second_url = "http://news.baidu.com/"
        self.driver.get(second_url)
        sleep(5)
        self.driver.back();
        sleep(5)
        self.driver.forward()
        sleep(5

四、浏览器句柄切换 

方法说明:current_window_handle:获得当前窗口句柄

window_handles:返回所有窗口的句柄到当前对话

switch_to.window(窗口句柄):切换到对应的窗口

实例如下:

复制代码






 nowhandle=driver.current_window_handle
 driver.find_element_by_name("tj_trnews").click()
 time.sleep(3)
 #由于百度新闻窗口打开,所以要指向新窗口,即百度新闻窗口
 allhandles=driver.window_handles
   for handle in allhandles:
         if(handle!=nowhandle):
             driver.switch_to.window(handle)
复制代码

五、综合用例

打开百度首页,点击新闻之后回退到主页,再点击hao123再回主页,再点击地图再回主页、再点击视频再回主页、再点击贴吧再回主页、再点击学术再回主页

1
2
3
4
5
6
7
8
9
10
11
12
def testBackForword(self):
        elements = self.driver.find_elements_by_class_name("mnav")
        elementSize = len(elements)
        print(elementSize)
        for num in range(0,elementSize-1):
            elements = self.driver.find_elements_by_class_name("mnav")
            name = elements[num] .get_attribute('name')
            print(name)
            elements[num] .click()
            sleep(2)
            self.driver.back()
            sleep(2)