Selenium学习,顺带学习简单python用法

266 阅读1分钟

环境配置

  • install python
  • Add pip.exe and python.exe paths to system environment variables
  • pip install selenium
  • install pycharm
  • install the WebDriver version corresponding to the browser version(Add the path to the system environment variable or put WebDriver in the Scripts file in the python directory)

最简单案例:

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

driver = webdriver.Edge()
driver.get('http://www.baidu.com')
driver.find_element(By.ID, 'kw').send_keys('w')
driver.find_element(By.ID, 'su').click()
sleep(3)
driver.quit()


#封装函数
def test():
    driver = webdriver.Edge()
    driver.get('http://www.baidu.com')
    driver.find_element(By.ID, 'kw').send_keys('w')
    driver.find_element(By.ID, 'su').click()
    sleep(3)
    driver.quit()

# test()

#封装类
class TestCase(object):
    def __init__(self):
        self.driver = webdriver.Edge()

    def test(self):
        self.driver.get('http://www.baidu.com')
        self.driver.find_element(By.ID, 'kw').send_keys('w')
        self.driver.find_element(By.ID, 'su').click()
        sleep(3)
        self.driver.quit()

if __name__ == '__main__':
    case = TestCase()
    case.test()

元素定位

find_element 返回元素 find_elements 返回一个集合

find_element_by_id() find_element_by_xpath() find_element_by_link_text() find_element_by_partial_link_text() find_element_by_tag_name() find_element_by_name() find_element_by_class_name() find_element_by_css_selector()

现在find_element_by_...已经被弃用,推荐方法

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By

class TestElement(object):

    def __init__(self):
        self.driver = webdriver.Edge()
        self.driver.get('http://www.baidu.com')

    def test_id(self):
        element = self.driver.find_element(By.ID, 'kw')
        element.send_keys('id')
        self.driver.find_element(By.ID, 'su').click()
        sleep(1)
        # self.driver.quit()

    def test_name(self):
        element = self.driver.find_element(By.NAME, 'wd')
        element.send_keys('name')
        self.driver.find_element(By.ID, 'su').click()
        sleep(1)
        # self.driver.quit()

    def test_link_text(self):
        self.test_name()
        self.driver.find_element(By.LINK_TEXT, '百度首页').click()
        sleep(1)
        # self.driver.quit()

    def test_partial_link_text(self):
        self.test_name()
        self.driver.find_element(By.PARTIAL_LINK_TEXT, '首页').click()
        sleep(1)
        # self.driver.quit()

    def test_xpath(self):
        element = self.driver.find_element(By.XPATH, '//*[@id="kw"]')
        element.send_keys('xpath')
        self.driver.find_element(By.ID, 'su').click()
        sleep(1)
        # self.driver.quit()

    def test_tag_name(self):
        # 返回的是一个list列表,通过序号获取,一般不用tag_name,不能准确的获取
        element = self.driver.find_element(By.TAG_NAME, 'input')[0]
        print(element)
        sleep(1)
        # self.driver.quit()

    def test_css_selector(self):
        element = self.driver.find_element(By.CSS_SELECTOR, '#kw')
        element.send_keys('selector')
        self.driver.find_element(By.ID, 'su').click()
        sleep(1)
        # self.driver.quit()

    def test_css_name(self):
        element = self.driver.find_element(By.CLASS_NAME, 's_ipt')
        element.send_keys('css')
        self.driver.find_element(By.ID, 'su').click()
        sleep(1)
        # self.driver.quit()


if __name__ == '__main__':
    case = TestElement()
    # case.test_id()
    # case.test_name()
    # case.test_link_text()
    # case.test_partial_link_text()
    # case.test_xpath()
    # case.test_tag_name()
    # case.test_css_selector()
    case.test_css_name()

webdriver属性和方法

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By

class TestDriver(object):

    def __init__(self):
        self.driver = webdriver.Edge()
        self.driver.get('http://www.baidu.com')

    def test_props(self):
        print(self.driver.name)   # 浏览器名称
        print(self.driver.current_url)  # 当前url
        print(self.driver.title)    # 当前页面标题
        print(self.driver.window_handles)   # 当前窗口所有句柄
        print(self.driver.current_window_handle)  # 当前窗口句柄
        print(self.driver.page_source)  # 浏览器源码
        self.driver.quit()  # 退出浏览器

    def test_methods(self):
        self.driver.find_element(By.ID, 'kw').send_keys('methods')
        self.driver.find_element(By.ID, 'su').click()
        sleep(3)
        self.driver.back()  # 浏览器后退
        sleep(3)
        self.driver.refresh()  # 浏览器刷新
        sleep(3)
        self.driver.forward()  # 浏览器前进
        sleep(3)
        self.driver.close()  # 关闭当前浏览器页面tab

if __name__ == '__main__':
    case = TestDriver()
    # case.test_props()
    case.test_methods()