コード例 #1
0
def open_url(host, browser):
    dc = {"browserName": browser}
    driver = Remote(command_executor=host, desired_capabilities=dc)
    driver.get("https://www.baidu.com/")
    driver.find_element(By.CSS_SELECTOR, ".s_ipt").send_keys("selenium")
    driver.find_element(By.CSS_SELECTOR, "span>input#su").click()
    driver.close()
コード例 #2
0
ファイル: Case.py プロジェクト: inwady/homework-4
class Case(TestCase):
    def setUp(self):
        self.browser = config.get("executor.browser.name", "CHROME")
        self.server_url = config["executor.scheme"] + "://" + config[
            "executor.server"] + "/wd/hub"

        log_d("Try connect " + self.server_url)
        self.driver = Remote(command_executor=config["executor.scheme"] +
                             "://" + config["executor.server"] + "/wd/hub",
                             desired_capabilities=getattr(
                                 DesiredCapabilities, self.browser).copy())

        # self.driver = webdriver.Chrome()
        # self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(config["timeout"])

        self.loginModel = LoginPage(self.driver, os.environ.get('LOGIN'),
                                    os.environ.get('PASSWORD'))

        self.loginModel.open()
        self.loginModel.auth()

        self.pages = []

    def tearDown(self):
        self.loginModel.close()

        for page in self.pages:
            page.close()

        self.driver.close()

    def addPage(self, page):
        self.pages.append(page)
コード例 #3
0
def test_baidu(host, browser):
    print('当前浏览器是%s,启动时间是%s' % (browser, time.ctime()))
    dc = {'browserName': browser}
    driver = Remote(command_executor=host, desired_capabilities=dc)
    driver.get('https://www.baidu.com/')
    driver.find_element_by_id('kw').send_keys('selenium')
    driver.find_element_by_id('su').click()
    time.sleep(3)
    driver.close()
    print('%s结束时间是%s' % (browser, time.ctime()))
コード例 #4
0
class BugFree管理员登录退出(unittest.TestCase):
    """
    演示的是Bugfree的登录和退出
    数据驱动,相同逻辑使用不同的数据去运行
    """
    def setUp(self):
        # self.driver = webdriver.Chrome()
        # self.driver.implicitly_wait(30)
        # self.base_url = "http://192.168.2.87"
        command_executor = 'http://192.168.2.35:8012/wd/hub'
        desired_capabilities = {
            'platform': 'ANY',
            'browserName': 'chrome',
            'version': '',
            'javascriptEnabled': True
        }
        self.driver = Remote(command_executor, desired_capabilities)
        self.driver.implicitly_wait(30)
        self.base_url = "http://192.168.2.87"
        driver = self.driver
        logging.info("打开浏览器成功")

    def tearDown(self):
        self.driver.close()
        pass

    @ddt.unpack
    @ddt.data(*test_data)
    def test_admin_login_test(self, admin, password, flag):
        """admin的登录的所有测试用例"""
        logging.info("test_admin_login_test start......")
        driver = self.driver
        driver.get(self.base_url + "/bugfree/index.php/site/login")
        driver.find_element_by_id("LoginForm_username").clear()
        driver.find_element_by_id("LoginForm_username").send_keys(admin)
        driver.find_element_by_id("LoginForm_password").clear()
        driver.find_element_by_id("LoginForm_password").send_keys(password)
        driver.find_element_by_id("LoginForm_rememberMe").click()
        driver.find_element_by_id("SubmitLoginBTN").click()
        # handles = driver.window_handles
        # driver.switch_to.window(handles[1])
        time.sleep(3)
        self.assertIn(flag, driver.page_source)
        logging.info("test data is : {0},{1},{2}".format(
            admin, password, flag))
        capture_screen(driver)
        # pic_path = capture_screen(driver)
        # if pic_path is None:
        #     logging.error("截图不成功")
        # else:
        #     logging.info(pic_path)
        logging.info("test_admin_login_test end......")
コード例 #5
0
class TestSeleniumInDockerAndFirefox(unittest.TestCase):
    def setUp(self):
        self.browser = Remote(
            desired_capabilities=DesiredCapabilities.FIREFOX,
            command_executor="http://selenium-hub:4444/wd/hub"
        )

    def tearDown(self):
        self.browser.close()

    def test_sample(self):
        self.browser.get('http://sauceclient.readthedocs.io')
        self.assertIn('Selenium', self.browser.page_source)
コード例 #6
0
def driver():
    """
    Selenium driver fixture
    """
    # Start a selenium server running chrome
    capabilities = DesiredCapabilities.CHROME.copy()
    capabilities['chromeOptions'] = {
        'binary': os.getenv('CHROME_BIN', '/usr/bin/google-chrome-stable'),
        'args': ['--no-sandbox'],
    }
    driver = Remote(
        os.getenv('SELENIUM_URL', 'http://chrome:5555/wd/hub'),
        capabilities,
    )
    driver.implicitly_wait(10)
    yield driver
    driver.close()
コード例 #7
0
ファイル: conftest.py プロジェクト: mitodl/micromasters
def driver():
    """
    Selenium driver fixture
    """
    # Start a selenium server running chrome
    capabilities = DesiredCapabilities.CHROME.copy()
    capabilities['chromeOptions'] = {
        'binary': os.getenv('CHROME_BIN', '/usr/bin/google-chrome-stable'),
        'args': ['--no-sandbox'],
    }
    driver = Remote(
        os.getenv('SELENIUM_URL', 'http://chrome:5555/wd/hub'),
        capabilities,
    )
    driver.implicitly_wait(10)
    yield driver
    driver.close()
コード例 #8
0
def main():
    '''
    Prior to execution, run the following on CLI:
        $ keyring.exe set system email
        Password for 'email' in 'system': *****************
        $ keyring.exe set system LinkedIn
        Password for 'email' in 'system': *****************
    The CLI will not show asterisks for password.
    '''
    email = keyring.get_password("system", "email")
    passwd = keyring.get_password("system", "linkedin")
    localappdata = os.environ.get('LOCALAPPDATA')
    webdriver_service = service.Service(
        os.path.join(localappdata, 'operadriver_win64\\operadriver.exe'))
    webdriver_service.start()

    browser = Remote(
        webdriver_service.service_url,
        DesiredCapabilities.OPERA)
    browser.get("https://linkedin.com/uas/login")

    email_element = browser.find_element_by_id("username")
    email_element.send_keys(email)
    pass_element = browser.find_element_by_id("password")
    pass_element.send_keys(passwd)
    pass_element.submit()
    time.sleep(5)
    try:
        mfa_element = browser.find_element_by_id(
            "input__phone_verification_pin")
        mfa_element.send_keys(input("What is the LinkedIn verification code?"))
        mfa_element.submit()
    except exceptions.NoSuchElementException:
        pass
    os.system('cls')
    print("[+] Logged in")
    job_bot(browser)
    browser.close()
コード例 #9
0
def deinitialize_selenium(driver: webdriver.Remote):
    driver.close()
コード例 #10
0
from selenium.webdriver import Remote
import time
#定义主机与浏览器
lists = {
    'http://127.0.0.1:4444/wd/hub': 'internet explorer',
    'http://127.0.0.1:5555/wd/hub': 'chrome',
    'http://127.0.0.1:5556/wd/hub': 'firefox'
}

#通过不同的浏览器执行脚本
for host, browser in lists.items():
    print(host, browser)
    driver = Remote(command_executor=host,
                    desired_capabilities={
                        'platform': 'ANY',
                        'browserName': browser,
                        'version': '',
                        'javascriptEnabled': True
                    })
    driver.get("https://www.baidu.com")
    time.sleep(2)
    driver.find_element_by_id('kw').send_keys(browser)
    time.sleep(2)
    driver.find_element_by_id('su').click()
    time.sleep(2)
    driver.close()
コード例 #11
0
ファイル: BasePage.py プロジェクト: zhaowen13/ui
class BasePage(object):
    def __init__(self, project_name):
        self.driver = ''
        self.loc = ''
        self.project_name = project_name
        yamlPath = "user.yaml"
        yaml.load(yamlPath, Loader=yaml.BaseLoader)
        yaml.warnings({'YAMLLoadWarning': False})
        f = open(yamlPath, 'r')
        temp = yaml.load(f.read())
        self.url = temp[project_name]['url']
        self.username = temp[project_name]['username']
        self.password = temp[project_name]['password']

    def open(self,
             browser="chrome",
             host='http://localhost:8081/wd/hub'
             ):  # 初始化 打开浏览器 并最大化  self 与java中的this中一样,调用时不用传入self参数
        try:
            self.driver = Remote(command_executor=host,
                                 desired_capabilities={
                                     'platform': 'ANY',
                                     'browserName': browser,
                                     'version': '',
                                     'javascriptEnabled': True
                                 })
            self.driver.maximize_window()
        except Exception as e:
            print(e)

        logger_cls.info(u"打开{0}浏览器".format(browser))
        logger_cls.info(u"最大化")

    def get(self):
        try:
            self.driver.get(self.url)
            self.driver.implicitly_wait(10)  # 隐性等待,最长等10秒
            logger_cls.info(u'打开:{0}'.format(self.url))
        except BaseException:
            logger_cls.error(u'打开{0}失败'.format(self.url))
        self.loc = loc.Analyze(self.project_name)  #初始化,读取xml 赋值给loc

    def find(self, name):  #元素定位,并返回定位好的元素
        try:
            el = WebDriverWait(self.driver, 3,
                               0.5).until(  #设置显示等待时间,每0.5秒检查一次,如果超出指定值就报错
                                   EC.presence_of_element_located(
                                       (self.loc[name].type,
                                        self.loc[name].UIIdentifier)))
            logger_cls.info(u'定位元素:{0}'.format(name))
            # logger_cls.info(loc[name].value)
        except BaseException:
            logger_cls.error(u'定位元素:{0}失败'.format(name))
        return el

    def send_keys(self, name, text):
        try:
            self.find(name).send_keys(text)
            logger_cls.info(u'在:{0}输入{1}'.format(name, text))
            time.sleep(3)
        except BaseException:
            logger_cls.error(u'在:{0}输入{1}失败'.format(name, text))

    def click(self, name):
        try:
            self.find(name).click()
            logger_cls.info(u'点击:{0}'.format(name))
            time.sleep(3)
        except BaseException:
            logger_cls.error(u'点击:{0}失败'.format(name))

    def being(self, name):
        t = False
        try:
            self.driver.find_element_by_xpath(self.loc[name].UIIdentifier)
            t = True
            logger_cls.info(u'{0}元素存在'.format(name))
        except BaseException:
            logger_cls.info(u'{0}元素不存在'.format(name))
        return t

    def login(self):
        self.get()
        self.send_keys(u'用户名', self.username)
        self.send_keys(u'密码', self.password)
        self.click(u'登录')
        time.sleep(3)
        if self.being(u'不再提示'):
            self.click(u'不再提示')
        # self.get_version()

    def clearmonitor(self):
        names = [u'博主', u'博主圈']
        self.click(u'事件')
        if self.being(u'是否有事件'):
            self.focus(u'找回')
            self.click(u'多选')
            self.click(u'全选')
            self.click(u'删除')
        for name in names:
            self.click(name)
            if self.being(u'是否有博主'):
                self.focus(u'找回')
                self.click(u'多选')
                self.click(u'全选')
                self.click(u'删除')

    def randomclick(self, name, div=None):
        text = ''
        i = len(self.driver.find_elements_by_xpath(
            self.loc[name].UIIdentifier))
        logger_cls.info(u'{0}列表中有{1}个参数'.format(name, i))
        y = random.randint(1, i)
        if div == None:
            path = self.loc[name].UIIdentifier + '[' + str(y) + ']'
            text = self.driver.find_element_by_xpath(path).text
            self.driver.find_element_by_xpath(path).click()
            logger_cls.info(u'随机选择列表中的{0}第个参数并点击'.format(y))
        else:
            i2 = len(
                self.driver.find_elements_by_xpath(
                    self.loc[name].UIIdentifier + '[' + str(y) + ']'))
            y2 = random.randint(1, i2)
            path = self.loc[name].UIIdentifier + '[' + str(y2) + ']' + div
            text = self.driver.find_element_by_xpath(path).text
            self.driver.find_element_by_xpath(path).click()
            logger_cls.info(u'随机选择列表中的{0}第个参数并点击'.format(y2))

        logger_cls.info(u'{0}:文本的值为:{1}'.format(name, text))
        time.sleep(3)
        return text

    def close(self):
        logger_cls.info(u'3秒后关闭当前页面')
        time.sleep(3)
        self.driver.close()

    def quit(self):
        logger_cls.info(u'3秒后关闭浏览器')
        time.sleep(3)
        self.driver.quit()

    def get_url(self):
        url = self.driver.current_url
        logger_cls.info(u'当前页面url:' + url)
        return url

    def get_text(self, name):
        text = self.find(name).text
        logger_cls.info(u'{0}文本框的值为:{1}'.format(name, text))
        return text

    def back(self):
        self.driver.back()
        logger_cls.info(u'返回上一页面')

    def clear(self, name):
        self.find(name).clear()
        logger_cls.info(u'清空文本框:{0}'.format(name))

    def get_name(self):
        name = self.driver.name
        logger_cls.info(u'浏览器名称:{0}'.format(name))

    def get_driver(self):
        return self.driver

    def get_version(self):
        version = self.driver.capabilities['version']
        logger_cls.info(u'浏览器版本:{0}'.format(version))
        return version

    def switch_to(self):
        self.driver.switch_to.window(self.driver.window_handles[-1])
        logger_cls.info(u'切换页面')

    def focus(self, name):
        ele = self.find(name)
        ActionChains(self.driver).move_to_element(ele).perform()
        logger_cls.info(u'鼠标悬停到元素:{0}'.format(name))

    def refresh(self):
        self.driver.refresh()
        logger_cls.info(u'刷新页面')

    def title(self):
        title = self.driver.title
        logger_cls.info(u'当前页面标题' + title)
        return title

    def Slide(self, height):
        js = "var q=document.documentElement.scrollTop={0}".format(str(height))
        self.driver.execute_script(js)
        logger_cls.info(u'上下滑动' + str(height))

    def sleep(self, i):
        logger_cls.info(u'暂停{0}秒'.format(i))
        time.sleep(int(i))

    def Screenshot(self, name):
        # name='screenshot_'
        isExists = os.path.exists("../images\\")
        # 判断结果
        if not isExists:
            # 如果不存在则创建目录
            # 创建目录操作函数
            os.makedirs("../images\\")
            print u'创建images目录'
        timestrmap = time.strftime('%Y%m%d_%H%M%S')
        imgPath = os.path.join('../images\\', str(timestrmap) + name + '.png')
        self.driver.save_screenshot(imgPath)
        logger_cls.info(u'截图:{0}{1}.png'.format(str(timestrmap), name))
コード例 #12
0
def deinitialize_selenium(driver: webdriver.Remote):
    driver.close()