Exemplo n.º 1
0
def setAge(driver):
    draggable_element = driver.find_element_by_css_selector("svg > circle:nth-of-type(2)")
    actions = ActionChains(driver)
    x = random.randint(-80, 80)
    y = random.randint(0, 170)
    actions.drag_and_drop_by_offset(draggable_element, x, y)
    actions.perform()
Exemplo n.º 2
0
    def test1(self):
        baseUrl = "https://jqueryui.com/slider/"
        # driver = webdriver.Firefox()
        # driver.maximize_window()
        # driver.get(baseUrl)
        driverLocation = "/Users/harisrizwan/Selenium/chrome/chromedriver"
        os.environ["chrome.driver"] = driverLocation
        driver = webdriver.Chrome(driverLocation)
        driver.implicitly_wait(5)
        driver.maximize_window()
        driver.get(baseUrl)

        driver.switch_to.frame(0)

        Slider = driver.find_element(By.XPATH,"//div[@id='slider']//span")
        time.sleep(3)

        try:

            actions = ActionChains(driver)

            actions.drag_and_drop_by_offset(Slider, 85, 0).perform()

        except:
            print("sliding failed")

        time.sleep(4)
Exemplo n.º 3
0
def try_login():
    """尝试登录"""
    try:

        url = 'https://s.taobao.com/search?q=' + quote(KEYWORD)
        browser.get(url)

        login = browser.find_element_by_id('fm-login-id')
        login.clear()
        login.send_keys('username')
        time.sleep(1)
        password = browser.find_element_by_id('fm-login-password')
        password.clear()
        password.send_keys('password')
        time.sleep(1)

        source = browser.find_element_by_id('nc_1_n1z')
        # target = browser.find_element_by_id('nc_1_n1t')
        actions = ActionChains(browser)
        # actions.drag_and_drop(source, target)
        actions.drag_and_drop_by_offset(source, 258, 0)
        actions.perform()
        time.sleep(1.5)

        button = browser.find_element_by_class_name('fm-btn')
        button.click()
        time.sleep(1)

        print("登录成功")
    except Exception as reason:
        print("登录失败:" + str(reason))
Exemplo n.º 4
0
    def scroll_tc_box(self, driver):
        'Get Scroller element'
        scroller = self.get_scroller_element(driver)
        print(datetime.now())
        'Get Accept element'
        accept_element = self.get_accept_element(driver)
        'Scroll T & C'
        for i in range(188):
            print("Scrolling T & C, Please wait", i)
            actions = None
            actions = ActionChains(driver)

            'Drag and Drop Scroller element to offset provided'
            for j in range(3):
                actions.drag_and_drop_by_offset(scroller, 0, 100).perform()
            self.common_utility.close_alert(driver)

        'Click Send to bottom to close help box and wait till it closes'
        self.click_send_to_bottom_element(driver)
        time.sleep(12)

        'Click Accept Button'
        self.common_utility.close_alert(driver)
        result = self.common_utility. \
                  web_element_action(driver,accept_element,
                                       "click",
                                       "",
                                       "accept_element")

        return result
Exemplo n.º 5
0
    def test1(self):
        driver = None
        try:
            baseUrl = "https://jqueryui.com/slider/"
            driver = webdriver.Firefox()
            driver.maximize_window()
            driver.get(baseUrl)
            driver.implicitly_wait(3)

            driver.switch_to.frame(0)

            element = driver.find_element(By.XPATH,
                                          "//div[@id='slider']//span")
            time.sleep(2)
            try:
                actions = ActionChains(driver)
                actions.drag_and_drop_by_offset(element, 100, 0).perform()
                print("Sliding Element Successful")
                time.sleep(2)
            except:
                print("Sliding failed on element")
        except:
            print("Inside Error")
        finally:
            driver.quit()
Exemplo n.º 6
0
def handle_driver(driver, ac1):
    dr = ActionChains(driver)
    dr.move_to_element(ac1).click_and_hold(ac1).perform()
    time.sleep(2.5)
    dr.move_by_offset(573, 381).perform()
    time.sleep(0.3)
    file_name = 'bi.png'
    driver.save_screenshot(file_name)
    # dr.release().perform()
    driver.save_screenshot('bi2.png')
    im = Image.open(file_name)
    box = (562, 224, 822, 340)
    region = im.crop(box)
    # region.show()
    file_cut = 'cut.png'
    region.save(file_cut)
    time.sleep(1)
    move_num = handl.scan_img(file_cut)
    print move_num
    # ActionChains(driver).drag_and_drop_by_offset(ac1, move_num-7, 0).perform()
    # time.sleep(1)
    # dr.move_to_element(ac1).perform()
    driver.save_screenshot('bi3.png')
    dr.move_by_offset(0, 768).release().perform()
    driver.save_screenshot('biok.png')
    time.sleep(1)
    driver.save_screenshot('biok2.png')
    dr.drag_and_drop_by_offset(ac1, 0, move_num-7).perform()
    driver.save_screenshot('biok3.png')
    driver.quit()
Exemplo n.º 7
0
    def testMethod(self):
        #opt = webdriver.ChromeOptions()
        #opt.add_argument("user-data-dir=C:\\Users\\Arkus\\AppData\\Local\\Google\\Chrome\\User Data\\Default")
        baseUrl = "https://jqueryui.com/slider/"
        # Instantiate the FF browser command
        driver = webdriver.Chrome()#options=opt)
        # Window maximize
        driver.maximize_window()
        # Open the provided URL
        driver.get(baseUrl)
        driver.implicitly_wait(5)
        hw = handyWrappers(driver)

        driver.switch_to.frame(0)
        time.sleep(2)
        Slider = hw.getElement("//div[@id='slider']//span","xpath")


        try:
            actions = ActionChains(driver)
            actions.drag_and_drop_by_offset(Slider,100,0).perform()
            print("Sliding element successful")
            time.sleep(2)

            print("Item clicked")
        except:
            print("Sliding failed on element")

        # Idle and Close
        time.sleep(5)
        driver.quit()
Exemplo n.º 8
0
def run():
    selector = etree.HTML(res)
    urls = re.findall(
        r'<a onclick="utLoginInterceptor.*? href="(.*?)" target="_blank" class="ma_h1"',
        res, re.S)  # 匹配url
    try:
        print('识别出滑动界面')
        url_fail = re.findall("<script>window.location.href='(.*?)';</script>",
                              res, re.S)
        url_fail = url_fail[0]
        # driver.maximize_window()
        time.sleep(3)
        driver.get(url_fail)
        time.sleep(2)
        print('开始滑动')
        # 滑动条定位
        start = driver.find_element_by_xpath(
            '//div[@id="nc_1__scale_text"]/span')
        # 长按拖拽
        action = ActionChains(driver)
        # 长按
        action.click_and_hold(start).perform()
        # 拉动
        action.drag_and_drop_by_offset(start, 400, 0).perform()
        time.sleep(3)

    except Exception as e:
        for url in urls:
            url_new = 'https://www.qcc.com/' + url
            print(url_new)

        print('*' * 100)
Exemplo n.º 9
0
def test_toggle_snap(graph_cases, snap):
    """
    :type graph_cases: qmxgraph.tests.conftest.GraphCaseFactory
    """
    graph = graph_cases('1v')
    selenium = graph.selenium

    # If snap is enabled, it should move to closest grid block (which are
    # always multiples of 10, as 10 is grid size). By default snap is enabled.
    if not snap:
        selenium.execute_script("api.toggleSnap()")

    vertex = graph.get_vertex()
    x, y = graph.get_vertex_position(vertex)
    w, h = graph.get_vertex_size(vertex)

    actions = ActionChains(selenium)
    actions.move_to_element(vertex)
    actions.move_by_offset(w / 2., h / 2.)
    actions.drag_and_drop_by_offset(None, 66, 66)
    actions.perform()

    vertex = graph.get_vertex()

    def expected(v):
        result = v + 66
        if snap:
            result = math.ceil(result / 10.) * 10
        return result

    assert int(vertex.get_attribute('width')) == w
    assert int(vertex.get_attribute('height')) == h
    assert int(vertex.get_attribute('x')) == expected(x)
    assert int(vertex.get_attribute('y')) == expected(y)
Exemplo n.º 10
0
    def test(self):
        # SETUP
        driver = webdriver.Firefox()
        driver.maximize_window()
        BaseURL = "https://jqueryui.com/slider/"
        driver.get(BaseURL)
        driver.implicitly_wait(3)

        # Switch to iframe
        driver.switch_to.frame(0)

        # Find element
        slider_path = "//div[@id='slider']/span"
        slider = driver.find_element(By.XPATH, slider_path)

        # perform actions
        try:
            actions = ActionChains(driver)
            actions.drag_and_drop_by_offset(slider, 100, 0).perform()
            time.sleep(3)

        except:
            print('HAHA! something went wrong bitch')

        driver.quit()
Exemplo n.º 11
0
    def test_puzzle2(self):
        driver = self.driver
        driver.implicitly_wait(2)
        driver.get(
            "https://ide.bellcode.com/puzzle2?pid=263&actid=3254&classid=439&package_id=69&lessonid=294&cburl=https%3A%2F%2Fwww.bellcode.com%2F%23%2Fcm%2Fstu_lesson_map%2F%3Fpackage_id%3D69%26lesson_id%3D294%26class_id%3D439"
        )
        time.sleep(5)
        driver.find_element_by_link_text(u"跳过").click()
        when_click = driver.find_element_by_css_selector(
            '#blocks > div.injectionDiv > svg.blocklySvg > g > g.blocklyBlockCanvas'
        )
        move = driver.find_element_by_css_selector(
            '#blocks > div.injectionDiv > svg.blocklyFlyout > g > g.blocklyBlockCanvas > g'
        )

        # fail。。。。↓
        # number = driver.find_element_by_xpath("//*[@id='blocks']/div[1]/*[name()='svg'][4]/*[name()='g']/*[name()='g'][1]/*[name()='g']/*[name()='g'][2]/*[name()='g']")
        # # number.click()
        # print (number.text)
        # number.send_keys("100")
        when_click_xy = when_click.location
        move_xy = move.location
        action = ActionChains(driver)
        action.drag_and_drop_by_offset(move, when_click_xy['x'],
                                       when_click_xy['y'])
        action.perform()
        time.sleep(10)
        # action.release(move)

        print(when_click_xy, move_xy)
Exemplo n.º 12
0
    def test_search_in_python_org(self):
        driver = self.driver
        driver.implicitly_wait(10)
        actions = ActionChains(driver)
        driver.get("http://localhost:8080")


        ens = driver.find_element_by_class_name('ens')
        ens.click()

        menu = driver.find_element_by_id('VIZ_popup_menu')
        buttons = driver.find_elements_by_css_selector('#VIZ_popup_menu button')
        for button in buttons:
            text = button.get_attribute('textContent')
            if text == 'Value':
                button.click()
                break

        graph = driver.find_element_by_css_selector(".graph")
        actions.drag_and_drop_by_offset(graph, xoffset=-15, yoffset=15).perform()

        play_button = driver.find_element_by_id('VIZ.SimControl.play_button')
        play_button.click()

        time.sleep(3)
        line = driver.find_element_by_css_selector("path.line:nth-child(1)")
        
        data = line.rect 
        print data       
        test_val = data['height'] + data['width']
        assert test_val != 0

        block = driver.find_element_by_id("BlockTestCompletion")
Exemplo n.º 13
0
def test1():
    driver = webdriver.Chrome(r"F:\automation_git\FormTalk\WebTEST\main\drivers\chromedriver.exe")
    driver.get("https://testpro.formtalk.net/login.do")
    driver.maximize_window()
    driver.find_element_by_css_selector("input[name=loginName]").send_keys("17111111111")
    time.sleep(1)
    driver.find_element_by_css_selector('input[name=loginPassword]').send_keys("123456")
    time.sleep(1)
    action = ActionChains(driver)
    SliderVerifyCodeIcon = driver.find_element_by_css_selector("span.verifyCode-icon")
    action.drag_and_drop_by_offset(SliderVerifyCodeIcon, driver.find_element_by_css_selector(("span.labelTip")).size["width"], 0).perform()
    action.release().perform()
    action.move_to_element(SliderVerifyCodeIcon).release()

    """登录"""
    time.sleep(1)
    driver.find_element_by_css_selector('input#doLogin').click()
    time.sleep(10)
    driver.switch_to.default_content()
    driver.find_element_by_css_selector("div[title=自动化应用准备1_新版]").click()
    time.sleep(2)
    driver.switch_to.frame(driver.find_element_by_css_selector("#iframeUseApp"))
    driver.switch_to.frame(driver.find_element_by_css_selector("#app-main-iframe"))
    driver.find_element_by_css_selector("button.form-udata-add-span.btns-info").click()
    driver.switch_to.window(driver.window_handles[-1])
    driver.switch_to.window(driver.window_handles[0])
    print("切换成功")


    time.sleep(15)
Exemplo n.º 14
0
    def test_search_in_python_org(self):
        driver = self.driver
        driver.implicitly_wait(10)
        actions = ActionChains(driver)
        driver.get("http://localhost:8080")

        ens = driver.find_element_by_class_name('ens')
        ens.click()

        menu = driver.find_element_by_id('VIZ_popup_menu')
        buttons = driver.find_elements_by_css_selector(
            '#VIZ_popup_menu button')
        for button in buttons:
            text = button.get_attribute('textContent')
            if text == 'Value':
                button.click()
                break

        graph = driver.find_element_by_css_selector(".graph")
        actions.drag_and_drop_by_offset(graph, xoffset=-15,
                                        yoffset=15).perform()

        play_button = driver.find_element_by_id('VIZ.SimControl.play_button')
        play_button.click()

        time.sleep(3)
        line = driver.find_element_by_css_selector("path.line:nth-child(1)")

        data = line.rect
        print data
        test_val = data['height'] + data['width']
        assert test_val != 0

        block = driver.find_element_by_id("BlockTestCompletion")
def test_can_move_block_from_one_container_to_another(live_server, browser,
                                                      admin_user):
    page = factories.FancyPageFactory(node__name='Home')
    main_container = page.containers.all()[0]

    layout = factories.TwoColumnLayoutBlockFactory(container=main_container)
    browser.visit(live_server.url + page.get_absolute_url())

    right = layout.containers.get(name='right-container')
    left = layout.containers.get(name='left-container')

    moving_block = factories.TextBlockFactory(container=right)
    factories.TextBlockFactory(container=right)
    factories.TextBlockFactory(container=left)

    browser.visit(live_server.url + page.get_absolute_url())
    browser.find_by_css('#editor-handle').first.click()

    source = browser.find_by_css('#block-{} div.move'.format(
        moving_block.uuid)).first

    chain = ActionChains(browser.driver)
    chain.drag_and_drop_by_offset(source._element, -600, 200).perform()

    time.sleep(5)

    assert right.blocks.count() == left.blocks.count() == 1
    assert main_container.blocks.count() == 2

    main_block_ids = [b.uuid for b in main_container.blocks.all()]
    assert main_block_ids == [layout.uuid, moving_block.uuid]
Exemplo n.º 16
0
def test_can_move_block_from_one_container_to_another(live_server, browser,
                                                      admin_user):
    page = factories.FancyPageFactory(node__name='Home')
    main_container = page.containers.all()[0]

    layout = factories.TwoColumnLayoutBlockFactory(container=main_container)
    browser.visit(live_server.url + page.get_absolute_url())

    right = layout.containers.get(name='right-container')
    left = layout.containers.get(name='left-container')

    moving_block = factories.TextBlockFactory(container=right)
    factories.TextBlockFactory(container=right)
    factories.TextBlockFactory(container=left)

    browser.visit(live_server.url + page.get_absolute_url())
    browser.find_by_css('#editor-handle').first.click()

    source = browser.find_by_css(
        '#block-{} div.move'.format(moving_block.uuid)).first

    chain = ActionChains(browser.driver)
    chain.drag_and_drop_by_offset(source._element, -600, 200).perform()

    time.sleep(5)

    assert right.blocks.count() == left.blocks.count() == 1
    assert main_container.blocks.count() == 2

    main_block_ids = [b.uuid for b in main_container.blocks.all()]
    assert main_block_ids == [layout.uuid, moving_block.uuid]
Exemplo n.º 17
0
def drag_element_by_offset_class_name(browser, className, index, rightOrLeft, offset):
    elements = find_elements_by_class(browser, className)
    action_chains = ActionChains(browser)
    if str(rightOrLeft) == "left":
        action_chains.drag_and_drop_by_offset(elements[int(index) - 1], -int(offset), 0).perform()
    else:
        action_chains.drag_and_drop_by_offset(elements[int(index) - 1], int(offset), 0).perform()
Exemplo n.º 18
0
def index_page(page):
    print("正在爬取第", page, "页")
    try:
        browser.get("https://s.taobao.com/search?q=" + quote(ShopName))
        try:
            slider2 = browser.find_element_by_css_selector(
                "#nc_1__scale_text span.nc-lang-cnt")
            action2 = ActionChains(browser)
            action2.drag_and_drop_by_offset(slider2, 500, 0).perform()
            time.sleep(5)
        except Exception as e:
            pass
        input = wait.until(
            EC.presence_of_element_located(
                (By.CSS_SELECTOR, "#mainsrp-pager div.form > input")))
        submit = wait.until(
            EC.element_to_be_clickable(
                (By.CSS_SELECTOR,
                 "#mainsrp-pager div.form > span.btn.J_Submit")))
        input.clear()
        input.send_keys(page)
        submit.click()
        wait.until(
            EC.text_to_be_present_in_element(
                (By.CSS_SELECTOR, "#mainsrp-pager li.item.active > span"),
                str(page)))
        wait.until(
            EC.presence_of_element_located(
                (By.CSS_SELECTOR, ".m-itemlist .items .item")))
        get_products()
    except TimeoutException:
        index_page(page)
Exemplo n.º 19
0
def login():
    options = Options()
    # 不能隐藏浏览器,会被检测到,要求登入账号
    # options.add_argument('--headless')
    # options.add_argument('--disable-gpu')
    # options.add_argument(
    #     '--user-agent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"')
    # driver = selenium.webdriver.Chrome(options=options)
    # 等待时间
    # driver.implicitly_wait(5)
    # driver.delete_all_cookies()

    # 实例化driver
    driver = webdriver.Chrome()
    # driver = webdriver.Firefox()
    # driver.maximize_window()
    time.sleep(3)
    driver.get('https://www.qcc.com')
    time.sleep(3)
    try:
        # 页面一直循环,直到 id="myDynamicElement" 出现
        print(1)
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "myDynamicElement")))
    finally:

        # 去除介绍界面,进入登录界面
        driver.find_element_by_class_name("tep1").click()
        time.sleep(3)
        # driver.find_element_by_xpath('//div[@class="login-panel-head clearfix"]/div[2]').click()

        # 选择密码登录模式
        driver.find_element_by_id("normalLogin").click()
        time.sleep(5)

        # 输入帐号密码
        driver.find_element_by_id("nameNormal").send_keys("13536020881")
        time.sleep(3)
        driver.find_element_by_id("pwdNormal").send_keys("123456789")
        time.sleep(3)

        # 滑动条定位
        start = driver.find_element_by_xpath(
            '//div[@id="nc_2__scale_text"]/span')
        # 长按拖拽
        action = ActionChains(driver)
        # 长按
        action.click_and_hold(start)
        # 拉动
        action.drag_and_drop_by_offset(start, 308, 0).perform()
        time.sleep(3)

        # 登录
        driver.find_element_by_xpath(
            '//form[@id="user_login_normal"]/button').click()
        time.sleep(2)

        # 获取cookies
        cookies = {i["name"]: i["value"] for i in driver.get_cookies()}
        print(cookies)
Exemplo n.º 20
0
def login(name, password):
	"""
	登陆
	"""
	url = "https://login.taobao.com/member/login.jhtml"
	browser.get(url)
	try:
		browser.find_element_by_css_selector("div.login-switch #J_Quick2Static").click()
	except Exception as excep:
		print(excep)

	# 输入用户名密码
	browser.find_element_by_id("TPL_username_1").send_keys(name)
	browser.find_element_by_id("TPL_password_1").send_keys(password)
	time.sleep(1)

	try:
		# 拖动滑块
		slider = browser.find_element_by_css_selector("#nc_1_n1z")
		action = ActionChains(browser)
		action.drag_and_drop_by_offset(slider, 500, 0).perform()
		time.sleep(3)
	except Exception as excep:
		print(excep)

	time.sleep(2)
	browser.find_element_by_id("J_SubmitStatic").click()
	return
Exemplo n.º 21
0
    def test(self):

        #for firefox at first we have to show the path where is the Geckodriver located
        #we set a variable "driverlocation" which will store the driver path
        driverlocation = "/usr/local/bin/gecko_driver/geckodriver"
        #now instantiate the firefox browser with the parameter of driver location
        driver = webdriver.Firefox(executable_path=driverlocation)
        # At first maximize the window
        driver.maximize_window()
        # Open The Provided URL with driver.get method
        baseURL = "http://www.jqueryui.com/droppable"
        driver.get(baseURL)
        # wait until the browser is fully loaded by implicitly_wait method
        driver.implicitly_wait(3)

        # At first switch to the iframe where is the drag and drop element located
        driver.switch_to.frame(0)

        element = driver.find_element(By.XPATH, "//div[@id='slider']//span")
        time.sleep(2)
        try:
            # for actions like mouse hovering we have to use selenium method Action Chains
            actions = ActionChains(
                driver
            )  # here actions is the object we created from the class ActionChains
            # For every actions we have to run move to element method and perform the action
            actions.drag_and_drop_by_offset(element, 100, 0).perform()
            print("Sliding Element Successfully")
            time.sleep(2)

        except:
            print("Sliding failed on element")
Exemplo n.º 22
0
def drag_element_by_offset_class_name(browser, className, index, rightOrLeft, offset):
    elements = find_elements_by_class(browser, className)
    action_chains = ActionChains(browser)
    if str(rightOrLeft) == "left":
        action_chains.drag_and_drop_by_offset(elements[int(index) - 1], -int(offset), 0).perform()
    else:
        action_chains.drag_and_drop_by_offset(elements[int(index) - 1], int(offset), 0).perform()
Exemplo n.º 23
0
 def test_dragPageElement(self):
     url = "http://jqueryui.com/resources/demos/draggable/scroll.html"
     # 访问被测试网页
     self.driver.get(url)
     # 获取页面上第一个能拖拽的页面元素
     initialPosition = self.driver.find_element_by_id("draggable")
     # 获取页面上第二个能拖拽的页面元素
     targetPosition = self.driver.find_element_by_id("draggable2")
     # 获取页面上第三个能拖拽的页面元素
     dragElement = self.driver.find_element_by_id("draggable3")
     # 导入提供拖拽元素方法的模块ActionChains
     from selenium.webdriver import ActionChains
     import time
     '''
     创建一个新的ActionChains,将webdriver实例对象driver作为参数值传入
     然后通过WebDriver实例执行用户动作。
     '''
     action_chains = ActionChains(self.driver)
     # 将页面上第一个能被拖拽的元素拖拽到第二个元素位置
     action_chains.drag_and_drop(initialPosition, targetPosition).perform()
     # 将页面上第三个能拖拽的元素,向右下拖动10个像素,共拖动5次
     for i in xrange(5):
         action_chains.drag_and_drop_by_offset(dragElement, 10,
                                               10).perform()
         time.sleep(2)
Exemplo n.º 24
0
    def test_success(self):
         """
         Testing a simple karel program made in blockly window.
         Becouse multiple modules are tested this could be regarded as integration test.
         """
         self.driver.get(self.host + "/index.html")  
         self.driver.execute_script('window.localStorage.clear();')

         actionChains = ActionChains(self.driver)
         actionChains2 = ActionChains(self.driver)
         actionChains3 = ActionChains(self.driver)
         actionChains4 = ActionChains(self.driver)
        #going into blockly window
         rb = self.driver.find_element_by_class_name("blockly-button")
         self.assertIsNotNone(rb)
         rb.click()

        #selecting and draging "move" piece on to the canvas
         karel = self.driver.find_element_by_id(":1")
         self.assertIsNotNone(karel)
  
         karel.click()
         getBlocklyElement(self, 0)
         piece = self.driver.find_element_by_class_name("blocklySelected")
         actionChains.drag_and_drop_by_offset(piece, 100, 0).perform()
        
        #selecting and draging "move" piece on to the canvas
         karel.click()
         getBlocklyElement(self, 0)
         piece = self.driver.find_element_by_class_name("blocklySelected")
         actionChains2.click_and_hold(piece).perform()
         actionChains2.move_by_offset(100, 12).release(piece).perform()
        
        #selecting and draging "move" piece on to the canvas
         karel.click()
         getBlocklyElement(self, 0)
         piece = self.driver.find_element_by_class_name("blocklySelected")
         actionChains3.click_and_hold(piece).perform()
         actionChains3.move_by_offset(100, 12).release(piece).perform()
         
         #selecting and draging "pickup" piece on to the canvas
         karel.click()
         getBlocklyElement(self, 3)
         piece = self.driver.find_element_by_class_name("blocklySelected")
         actionChains4.click_and_hold(piece).perform()
         actionChains4.move_by_offset(100, -75).release(piece).perform()

        #going back to karel
         back = self.driver.find_elements_by_class_name("btn-primary")[1]
         self.assertIsNotNone(back)
         back.click()
       
        #running program
         run = self.driver.find_element_by_class_name("run-button")
         self.assertIsNotNone(run)
         run.click()
        
        #checking if the program finished successfully
         self.assertIsNotNone(self.driver.find_element_by_class_name("alert-success"))
Exemplo n.º 25
0
    def test_search_in_python_org(self):
        driver = self.driver
        action_chains = ActionChains(driver)
        driver.get("http://localhost:8080")

        graph_elements = driver.find_elements_by_class_name("graph")
        for e in graph_elements:
            action_chains.drag_and_drop_by_offset(e, xoffset=2, yoffset=2).perform()
Exemplo n.º 26
0
def test_splider(driver):
    splider = driver.find_element_by_xpath(
        '''(//div//div[@class="el-tooltip el-slider__button"])[last()-5]''')
    action = ActionChains(driver)
    action.drag_and_drop_by_offset(splider, -100, 0).perform()
    time.sleep(2)
    action.reset_actions()
    action.drag_and_drop_by_offset(splider, 100, 0).perform()
Exemplo n.º 27
0
 def drug_and_drop(self, selector, selector_type='xpath', x=0, y=0):
     if 'get' in dir(self.webdriver):
         st = self._get_selector_type(selector_type)
         element = self.webdriver.find_element(st, selector)
         action = ActionChains(self.webdriver)
         action.drag_and_drop_by_offset(element, x, y).perform()
     else:
         raise Exception('object is element of page')
Exemplo n.º 28
0
def drag_n_drop(element, drag_to):
    actions = ActionChains(driver)
    if type(drag_to) == list:
        actions.drag_and_drop_by_offset(element.get_actual_webelement(),
                                        drag_to[0], drag_to[1]).perform()
    else:
        actions.drag_and_drop(element.get_actual_webelement(),
                              drag_to.get_actual_webelement()).perform()
Exemplo n.º 29
0
 def slider(self, locatorType, locator, data):
     element = self.getElement(locatorType, locator)
     try:
         actions = ActionChains(drvier)
         actions.drag_and_drop_by_offset(element, 0, 200).perform()
         self.log.info(f"Sliding element successful.")
     except:
         self.log.info(f"Sliding failed on element")
def resize_column(browser, column_name, left_or_right, offsetx):
    action_chains = ActionChains(browser)
    element = browser.execute_script(
        "return $('.ember-table-header-container .ember-table-content:contains(" + column_name + ")').parent().parent().children()[1]")
    if left_or_right == "left":
        action_chains.drag_and_drop_by_offset(element, -int(offsetx), 0).release().perform()
    else:
        action_chains.drag_and_drop_by_offset(element, int(offsetx), 0).release().perform()
 def move_slider_to_position(self, desired_value: int, switch, switch_value):
     slider = self.driver.driver.find_element_by_css_selector(self._slider_size)
     slider_width = slider.size['width']
     shift = (slider_width / 100) * (
             desired_value - switch_value) if desired_value == switch_value else (slider_width / 100) * (
                 desired_value - switch_value) - slider_width / 100
     action = ActionChains(self.driver.driver)
     action.drag_and_drop_by_offset(switch, shift, 0).perform()
Exemplo n.º 32
0
 def test_search_in_python_org(self):
     driver = self.driver
     driver.get("http://localhost:8000")
     assert "nengo" in driver.page_source
     assert "default.py" in driver.page_source
     element = driver.find_element_by_id("ensemble")
     action_chains = ActionChains(driver)
     action_chains.drag_and_drop_by_offset(element, xoffset=100, yoffset=200).perform()
Exemplo n.º 33
0
 def test_move_distance(self, elements, x=500, y=0):
     '''鼠标滑动距离'''
     time.sleep(2)
     action = ActionChains(self.driver)
     slider = self.driver.find_element_by_xpath(elements)
     action.click_and_hold(slider).perform()
     '''按下不松'''
     action.drag_and_drop_by_offset(slider, x, y).perform()
     '''移动多少的距离'''
Exemplo n.º 34
0
def drag_element(locatorMethod, locatorExpression, x, y, *args):
    u"""拖拽元素"""
    global driver
    try:
        action_chains = ActionChains(driver)
        element = getElement(driver, locatorMethod, locatorExpression)
        action_chains.drag_and_drop_by_offset(element, x, y).perform()
    except Exception, e:
        raise e
Exemplo n.º 35
0
    def test_search_in_python_org(self):
        driver = self.driver
        action_chains = ActionChains(driver)
        driver.get("http://localhost:8080")

        node_elements = driver.find_elements_by_class_name("node")
        for e in node_elements:
            action_chains.drag_and_drop_by_offset(e, xoffset=2,
                                                  yoffset=2).perform()
Exemplo n.º 36
0
class taobao():
    def __init__(self):
        self.browser = webdriver.Chrome("chromedriver.exe")
        # 最大化窗口
        self.browser.maximize_window()
        self.browser.implicitly_wait(5)
        self.domain = 'https://www.taobao.com/'
        self.action_chains = ActionChains(self.browser)

    def login(self, username, password):
        while True:
            self.browser.get(self.domain)
            time.sleep(1)

            #会xpath可以简化这几步
            #self.browser.find_element_by_class_name('h').click()
            #self.browser.find_element_by_id('fm-login-id').send_keys(username)
            #self.browser.find_element_by_id('fm-login-password').send_keys(password)
            self.browser.find_element_by_xpath('//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click()
            self.browser.find_element_by_xpath('//*[@id="fm-login-id"]').send_keys(username)
            self.browser.find_element_by_xpath('//*[@id="fm-login-password"]').send_keys(password)
            time.sleep(1)

            try:
                # 出现验证码,滑动验证
                slider = self.browser.find_element_by_xpath("//span[contains(@class, 'btn_slide')]")
                if slider.is_displayed():
                    # 拖拽滑块
                    self.action_chains.drag_and_drop_by_offset(slider, 258, 0).perform()
                    time.sleep(0.5)
                    # 释放滑块,相当于点击拖拽之后的释放鼠标
                    self.action_chains.release().perform()
            except (NoSuchElementException, WebDriverException):
                logger.info('未出现登录验证码')

            # 会xpath可以简化点击登陆按钮,但都无法登录,需要使用 pyautogui 完成点击事件
            #self.browser.find_element_by_class_name('password-login').click()
            #self.browser.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()
            # 图片地址
            coords = pyautogui.locateOnScreen('1.png', confidence=0.5)
            x, y = pyautogui.center(coords)
            click = pyautogui.leftClick(x, y)

            # nickname = self.get_nickname()
            # if nickname:
            #     logger.info('登录成功,呢称为:' + nickname)
            #     break
            # logger.debug('登录出错,5s后继续登录')
            # time.sleep(5)

    def get_nickname(self):
        self.browser.get(self.domain)
        time.sleep(0.5)
        try:
            return self.browser.find_element_by_class_name('site-nav-user').text
        except NoSuchElementException:
            return ''
Exemplo n.º 37
0
 def drag_and_drop_grade(self):
     """
     Drag and drop grade range.
     """
     self.wait_for_element_visibility(self.grade_ranges, "Grades ranges are visible")
     # We have used jquery here to adjust the width of slider to
     # desired range because drag and drop has behaved very inconsistently.
     # This does not updates the text of range on the slider.
     # So as a work around, we have used drag_and_drop without any offset
     self.browser.execute_script('$(".ui-resizable").css("width","10")')
     action = ActionChains(self.browser)
     moveable_css = self.q(css='.ui-resizable-e').results[0]
     action.drag_and_drop_by_offset(moveable_css, 0, 0).perform()
Exemplo n.º 38
0
def get_column_cursor(step, column_name):
    with AssertContextManager(step):
        cursor_css = "body.ember-application"

        action_chains = ActionChains(world.browser)
        element = world.browser.execute_script(
            "return $('.ember-table-header-container .ember-table-content:contains(" + column_name + ")').parent().parent().children()[1]")
        action_chains.drag_and_drop_by_offset(element, 10, 0).release().perform()

        cursor = find_elements_by_css(world.browser, cursor_css)
        style = cursor[0].get_attribute("style")
        assert_true(step, ("auto" in style) or ("resize" in style) or ("pointer" in style))
        action_chains.release()
        world.browser.refresh()
Exemplo n.º 39
0
    def test_search_in_python_org(self):
        driver = self.driver
        driver.implicitly_wait(5)
        actions = ActionChains(driver)

        driver.get("http://localhost:8080")
        elem1 = driver.find_element_by_css_selector('div.graph:nth-child(4) > button:nth-child(2)')
        actions.drag_and_drop_by_offset(elem1, xoffset=0, yoffset=-25).perform()
       
        elem2 = driver.find_element_by_css_selector('button.btn:nth-child(3)')
        actions.drag_and_drop_by_offset(elem2, xoffset=0, yoffset=25).perform()

        text1 = elem1.get_attribute('textContent')
        assert text1 != "0.00"

        text2 = elem2.get_attribute('textContent')
        assert text2 != "0.00"
Exemplo n.º 40
0
    def test_search_in_python_org(self):
        driver = self.driver
        driver.implicitly_wait(5)
        actions = ActionChains(driver)
        driver.get("http://localhost:8080")

        button = driver.find_element_by_css_selector('.play-pause-button')
        actions.click(on_element=button)
        actions.perform()

        time = driver.find_element_by_id("VIZ.SimControl.ticks_div")
        time_val = time.get_attribute('textContent')

        assert time_val != 0.00

        actions.click(on_element=button)
        actions.perform()

        window = driver.find_element_by_id('VIZ.SimControl.shown_div')
        actions.drag_and_drop_by_offset(window, xoffset=-100, yoffset=0).perform()
Exemplo n.º 41
0
 def move_right_slider(self, offset):
     action_chain = ActionChains(self.driver)
     action_chain.drag_and_drop_by_offset(web_driver_wait_element(self.driver, self.RIGHT_SLIDER), offset,
                                          0).perform()
Exemplo n.º 42
0
 def move_left_slider(self, offset):
     action_chain = ActionChains(self.driver)
     action_chain.drag_and_drop_by_offset(self.left_slider, offset, 0).perform()
Exemplo n.º 43
0
 def move_roller(self, xpath, xoffset):
     actionChains = ActionChains(self.browser)
     elem = self.browser.find_element_by_xpath(xpath)
     actionChains.drag_and_drop_by_offset(elem, xoffset, 0).perform()
Exemplo n.º 44
0
class TmallLogin(object):
    def __init__(self):
        self.driver = webdriver.PhantomJS(service_args=['--load-images=no'])
        self.action = ActionChains(self.driver)

    def sendinfo(self):
        self.driver.find_element_by_id('TPL_username_1').send_keys('*****@*****.**')
        self.driver.find_element_by_id('TPL_password_1').send_keys('codeismath11')
        self.driver.find_element_by_id('J_SubmitStatic').click()

    def checkslipper(self):  # 验证滑块部分
        slipper = self.driver.find_element_by_css_selector('.nc-lang-cnt')
        h_position = slipper.location
        logger.info('-' * 30 + str(h_position))
        self.action.drag_and_drop_by_offset(slipper, h_position['x'] + 300, h_position['y']).perform()

    def login(self):
        logger.info("Login Tmall")
        self.driver.get("https://login.tmall.com/")
        login_iframe = self.driver.find_element_by_id("J_loginIframe")
        if not login_iframe:
            logger.warning('Not found tmall login iframe!')
            return
        self.driver.switch_to.frame(login_iframe)
        if self.driver.find_element_by_id('J_Quick2Static').is_displayed():
            self.driver.find_element_by_id('J_Quick2Static').click()
        time.sleep(0.5)
        slipper = self.driver.find_element_by_css_selector('.nc-lang-cnt')
        if slipper:  # 如果有滑块
            self.checkslipper()
        self.sendinfo()
        time.sleep(uniform(8, 12))
        self.driver.get_screenshot_as_file('pic/success.png')

    def wait_for_clickable(self, selector, timeout=10):
        WebDriverWait(self.driver, timeout).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, selector))
        )

    def wait_after_click(self, click, wait, timeout=10):
        comm_ele = self.driver.find_element_by_css_selector(click)
        comm_ele.click()
        WebDriverWait(self.driver, timeout).until(
            EC.visibility_of_element_located((By.CSS_SELECTOR, wait))
        )

    def determine(self, element):  # 如果找到元素名,返回真,如果找不到,返回假
        try:
            self.driver.find_element_by_class_name(element)
            return True
        except BaseException:
            return False

    def choose_selector(self):  # 选择器分类
        dot_element = 'rate-page-break'
        result = self.determine(dot_element)
        print '--'*20
        print result
        print '--'*20
        if result is True:  # 如果有点点点的选择器
            next_page_selector = '.rate-page .rate-paginator .rate-page-break + a[data-page]'
            return next_page_selector
        else:
            next_page_selector = '.rate-page .rate-paginator a[data-page]'
            results = self.driver.find_elements_by_css_selector(next_page_selector)
            if len(results) == 1 and results[0].text == u'下一页>>':
                return next_page_selector
            elif len(results) == 2:  # 在中间的页码,有上一页和下一页时,有待检验
                return '.rate-page .rate-paginator a[data-page]:nth-child(5)'
            elif len(results) == 1 and results[0].text == u'<<上一页':
                pass  # 说明没有下一页了,不用再返回选择器了

    def crawler(self):
        # url = 'https://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.10.5suWJ0&id=527680541344&skuId=3150349001482&areaId=320100&cat_id=2&rn=5d8121f40e659a29a6ed8dfce87ffcbd&user_id=2786278078&is_b=1'
        url = 'https://detail.tmall.com/item.htm?spm=a1z10.15-b.w4011-7524477099.99.XU8KX2&id=39578745679&rn=f879610ca3b5a66a8cd08f19a0cc2de2&abbucket=8'
        logger.info(url)
        logger.info('the url for collecting info!')
        self.driver.get(url)
        time.sleep(uniform(6, 8))
        self.driver.save_screenshot('pic/1.png')
        self.wait_for_clickable('.tm-selected')  # 等累计评论可以点击了
        self.driver.save_screenshot('pic/2.png')
        self.wait_after_click('.tm-selected', '.rate-grid')  # 点击(前面的)累计评价,等(后面的)评论区域出现
        wait = ui.WebDriverWait(self.driver, 10)
        wait.until(lambda driver: self.driver.find_element_by_id('footer'))
        self.driver.save_screenshot('pic/3.png')
        page_queue.put({'url': url, 'page': '1', 'html': self.driver.page_source})  # 将第一页的评论内容放入队列中
        time.sleep(uniform(2, 3))
        for page in xrange(2, 4):
            time.sleep(uniform(10, 20))
            logger.info(page)
            print '**'*20
            selector = self.choose_selector()
            print selector
            print '**'*20
            try:
                self.wait_for_clickable(selector)  # 等下一页的选择器出现
                self.driver.save_screenshot('pic/turnpage_1.png')
            except Exception, err:
                logger.info(err)
            self.wait_after_click(selector, '.rate-grid')  # 点击(前面的)下一页的选择器,等后面的评论区域出现
            self.driver.save_screenshot('pic/turnpage_2.png')
            time.sleep(uniform(2, 3))
            self.driver.save_screenshot('pic/screenshot_%s.png' % page)
            page_queue.put({'url': url, 'page': page, 'html': self.driver.page_source})  # 将翻页的内容放入队列中
Exemplo n.º 45
0
def action_with_element(self, element_menu, drag):
    action = ActionChains(self.driver)
    action.move_to_element(element_menu).click()
    action.drag_and_drop_by_offset(drag, 45, 45)
    action.perform()
Exemplo n.º 46
0
def action_with_items(self, element_menu, element_item, drag_off):
    action = ActionChains(self.driver)
    action.move_to_element(element_menu).click()
    action.drag_and_drop_by_offset(element_item, 0, drag_off)
    action.perform()
Exemplo n.º 47
0
 def width(self, value):
     offset = value - self.width
     action = ActionChains(self.driver)
     action.drag_and_drop_by_offset(self._resize_handler, offset, 0)
     action.perform()