Selenium 自动化测试(四)
Selenium 执行 Javascript 脚本
WebDriver 有俩个方法执行 Javascript
- execute_script 同步执行
- execute_async_script 异步执行
通过Javascript实现页面滚动:
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from time import sleep
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class TestCase(object):
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.get('http://www.baidu.com')
self.driver.maximize_window()
def test_scroll(self):
self.driver.find_element(By.ID, 'kw').send_keys('selenium')
self.driver.find_element(By.ID, 'su').click()
sleep(2)
js = 'return document.title'
print(self.driver.execute_script(js))
js = 'window.scrollTo(0, document.body.scrollHeight)'
self.driver.execute_script(js)
sleep(3)
self.driver.quit()
if __name__ == '__main__':
case = TestCase()
case.test_scroll()
Selenium 屏幕截图
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from time import sleep, strftime, localtime, time
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class TestCase(object):
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.get('http://www.baidu.com')
self.driver.maximize_window()
def test_screenshot(self):
self.driver.find_element(By.ID, 'kw').send_keys('selenium')
self.driver.find_element(By.ID, 'su').click()
sleep(2)
curtime = strftime("%Y-%m-%d-%H-%M-%S", localtime(time()))
self.driver.save_screenshot(f'{curtime}_testScreen.png')
sleep(3)
self.driver.quit()
if __name__ == '__main__':
case = TestCase()
case.test_screenshot()
Selenium 定位 Frame
PyAutoGui
安装 >pip install pyautogui
elem = self.driver.find_element(By.ID, 'xxx')
rect = elem.rect
print(rect)
pyautogui.click(rect['x'] + 10, rect['y'] + 60)
验证码的处理
使用 pytesseract 和 PIL 模块解决
安装 pytesseract
pip install pytesseract
pip install pillow
- 截屏整个页面
- 获得验证码坐标
- 根据坐标抠图
- 用pytesseract模块验证