1, 设置无头浏览器模式
- from selenium import webdriver
- from selenium.webdriver.Chrome.options import Options
- chrome_options = Options()
- chrome_options.add_argument('- -headless')
- chrome_options.add_argument('- -disable-gpu')
- class XX(object):
- self.driver = webdriver.Chrome(chrome_options=chrome_options)# 设置无头
2, 设置屏幕尺寸
- self.driver.maximize_window() # 最大
- self.driver.set_window_size(1296, 1000) # 指定高 1296 宽 1000
3, 通过 xpath 获取元素并单击
- element = self.driver.find_elements_by_xpath('//*[@id="disabled"]/li[3]/a') # element 是获取的元素列表
- element [0].click()
4, 关闭浏览器
- # 关闭浏览器
- self.driver.close()
5, 获取 input 标签 输入文字 执行回车
- from selenium.webdriver.common.keys import Keys
- # 输入主机名: spupa01bat04 回车查询
- element = self.driver.find_elements_by_xpath(input_enter_xpath)[0]
- element.send_keys('spupa01bat04')
- element.send_keys(Keys.ENTER)
6, 执行双击
- from selenium import webdriver
- from selenium.webdriver import ActionChains # 该类可执行鼠标动作: 双击 拖拽等
- self.driver = webdriver.Chrome()
- self.acobj = ActionChains(self.driver)
- checkName = '风险'
- # '"+ checkName +"'是向标签 xpath 字符串路经引入的变量
- Xpath = "//span[text()='" + checkName + "']/../../..//span[text()='FSCapacity']"
- el_01 = self.driver.find_elements_by_xpath(Xpath)[0] # 获取元素
- self.acobj.double_click(el_01).perform() # 执行双击
- self.driver.implicitly_wait(20)
7, 执行等待
- # 隐式等待: 设置一个等待时间, 如果在这个等待时间内, 网页加载完成, 则执行下一步; 否则一直等待时间截止, 然后再执行下一步. 这样也就会有个弊端, 程序会一直等待整个页面加载完成, 直到超时, 但有时候我需要的那个元素早就加载完成了, 只是页面上有个别其他元素加载特别慢, 我仍要等待页面全部加载完成才能执行下一步.
- self.driver.implicitly_wait(10)
- # 显示等待: 配合该类的 until() 和 until_not() 方法, 就能够根据判断条件而进行灵活地等待了. 它主要的意思就是: 程序每隔 xx 检查一次, 如果条件成立了, 则执行下一步, 否则继续等待, 直到超过设置的最长时间, 然后抛出 TimeoutException
- from selenium.webdriver.support.wait import WebDriverWait
- # 超时时间为 30 秒, 每 0.2 秒检查 1 次, 直到 class="tt" 的元素出现
- text = WebDriverWait(driver,30,0.2).until(lambda x:x.find_element_by_CSS_selector(".tt")).text
- print(text)
- # 强制等待: 简单粗暴效率低
- from time import sleep
- sleep(5)
8, 浏览器全屏截图保存到指定路径
- png01_path = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'resource', 'png_codes.png')
- self.driver.save_screenshot(png01_path)
9, 退出 driver 程序
driver.quit()
10,select 下拉框的选值处理
- from selenium.webdriver.support.select import Select
- # 定位下拉框对象
- select_element = self.driver.find_elements_by_xpath(select_xpath)[0]
- # 构建下拉框对象
- sel_obj = Select(select_element)
- # 通过 value 值进行选择: 一周
- sel_obj.select_by_value('168h')
来源: http://www.bubuko.com/infodetail-3437611.html