def random_youtube():
iterations = randint(1,8)
count = 0
while(1):
item = words[randint(0,len(words))]
driver.get("https://www.youtube.com/results?search_query="+item)
element = driver.find_element_by_class_name('yt-uix-tile-link')
element.click()
actions = ActionChains(driver)
actions.send_keys('K')
actions.perform()
time.sleep(randint(15,50))
print "currently on site: " + driver.current_url
count = count +1
if count == iterations:
break;
python类ActionChains()的实例源码
def login_user(browser, username, password):
"""Logins the user with the given username and password"""
browser.get('https://twitter.com/login')
#Enter username and password and logs the user in
userContainer = browser.find_element_by_xpath('//input[contains(@class, "js-username-field email-input js-initial-focus")]')
passwordContainer = browser.find_element_by_xpath('//input[@type = "password"]')
action = ActionChains(browser).move_to_element(userContainer).click().send_keys(username) \
.send_keys(Keys.TAB).send_keys(password).perform()
submitButton = browser.find_element_by_xpath('//button[@type = "submit"]')
action = ActionChains(browser).move_to_element(submitButton).click().perform()
sleep(2)
#Check if user is logged-in (If there's two 'nav' elements)
prof = browser.find_elements_by_xpath('//div[@class = "DashboardProfileCard-content"]')
if len(prof) > 0:
return True
else:
return False
def drag_and_drop_on(self, other):
"""
Drag and drop this element on to another element instance
Note that browser support may vary
:param other: element to drop on
:Example: Drag an element onto another
a = browser.div(id='draggable')
b = browser.div(id='droppable')
a.drag_and_drop_on(b)
"""
self._assert_is_element(other)
value = self._element_call(lambda: ActionChains(self.driver)
.drag_and_drop(self.el, other.wd).perform(),
self.wait_for_present)
self.browser.after_hooks.run()
return value
def hover_on_element(element):
"""Hover over an element
Arguments:
element -- the Selenium WebDriver Element to hover on
Returns:
True of False
"""
if verbose:
print 'Hovering on element...'
try:
actions = ActionChains(Browser)
actions.move_to_element(element)
actions.perform()
return True
except:
return False
def hacker_typing(browser, spinter_selection, code):
"""We need to break Splinter abstraction and fall back to raw Selenium here.
Note: There is a bug of entering parenthesis due to IPython capturing keyboard input.
http://stackoverflow.com/questions/22168651/how-to-enter-left-parentheses-into-a-text-box
"""
elem = spinter_selection[0]._element
driver = browser.driver
# Activate IPython input mode
ActionChains(driver).click(elem).send_keys(Keys.ENTER).perform()
# Type in the code
a = ActionChains(driver)
a.send_keys(code)
a.perform()
time.sleep(1.0)
# Execute the text we just typed
a = ActionChains(driver)
a.key_down(Keys.SHIFT).send_keys(Keys.ENTER).key_up(Keys.SHIFT)
a.perform()
def drag_and_drop_test(self,
x_offset=0,
y_offset=0,
element_class="gt_slider_knob"):
"""????
:x_offset: ????x????
:y_offset: ????y????
:element_class: ??????CSS??
:use for: ?????????????
"""
dragger = self.driver.find_element_by_class_name(element_class)
action = ActionChains(self.driver)
action.drag_and_drop_by_offset(dragger, x_offset, y_offset).perform()
time.sleep(2.8)
def process(self,caption_text):
time.sleep(1)
caption_text
#self.driver.get("https://www.facebook.com")
actions = ActionChains(self.driver)
time.sleep(2)
actions.send_keys('p').perform()
time.sleep(1)
caption = ActionChains(self.driver)
caption.send_keys(caption_text).perform()
click_post = self.driver.find_element_by_xpath('//div[2]/div[3]/div/div[2]/div/button')
click_post.click()
print "Successfully posted "
self.driver.close()
#text = raw_input("Enter text to be posted - ")
def drag_and_drop_test(self,
x_offset=0,
y_offset=0,
element_class="gt_slider_knob"):
"""????
:x_offset: ????x????
:y_offset: ????y????
:element_class: ??????CSS??
:use for: ?????????????
"""
dragger = self.driver.find_element_by_class_name(element_class)
action = ActionChains(self.driver)
action.drag_and_drop_by_offset(dragger, x_offset, y_offset).perform()
time.sleep(2.8)
def drag_and_drop_test(self,
x_offset=0,
y_offset=0,
element_class="gt_slider_knob"):
"""????
:x_offset: ????x????
:y_offset: ????y????
:element_class: ??????CSS??
:use for: ?????????????
"""
dragger = self.driver.find_element_by_class_name(element_class)
action = ActionChains(self.driver)
action.drag_and_drop_by_offset(dragger, x_offset, y_offset).perform()
time.sleep(2.8)
def drag_and_drop_test(self,
x_offset=0,
y_offset=0,
element_class="gt_slider_knob"):
"""????
:x_offset: ????x????
:y_offset: ????y????
:element_class: ??????CSS??
:use for: ?????????????
"""
dragger = self.driver.find_element_by_class_name(element_class)
action = ActionChains(self.driver)
action.drag_and_drop_by_offset(dragger, x_offset, y_offset).perform()
time.sleep(2.8)
def mouse_down(self, locator):
"""Simulates pressing the left mouse button on the element specified by `locator`.
The element is pressed without releasing the mouse button.
Key attributes for arbitrary elements are `id` and `name`. See
`introduction` for details about locating elements.
See also the more specific keywords `Mouse Down On Image` and
`Mouse Down On Link`.
"""
self._info("Simulating Mouse Down on element '%s'" % locator)
element = self._element_find(locator, True, False)
if element is None:
raise AssertionError("ERROR: Element %s not found." % (locator))
ActionChains(self._current_browser()).click_and_hold(element).perform()
def test_file_upload_tooltips(driver, project):
driver.get('/')
driver.refresh()
driver.find_element_by_id('react-tabs-2').click()
driver.find_element_by_partial_link_text('Upload new dataset').click()
header_file = driver.find_element_by_css_selector('[name=headerFile]')
hover = ActionChains(driver).move_to_element(header_file)
hover.perform()
time.sleep(0.8)
assert driver.find_element_by_xpath(
"//span[contains(.,'filename,label')]"
).is_displayed()
tar_file = driver.find_element_by_css_selector('[name=tarFile]')
hover = ActionChains(driver).move_to_element(tar_file)
hover.perform()
time.sleep(0.8)
assert driver.find_element_by_xpath(
"//span[contains(.,'Each file in tarball should be formatted as follows')]"
).is_displayed()
def Click_and_Hold_Element(step_data):
try:
sModuleInfo = inspect.stack()[0][3] + " : " + inspect.getmoduleinfo(__file__).name
Element = LocateElement.Get_Element(step_data,selenium_driver)
if Element != "failed":
try:
click_and_hold = ActionChains(selenium_driver).click_and_hold(Element)
click_and_hold.perform()
CommonUtil.TakeScreenShot(sModuleInfo)
CommonUtil.ExecLog(sModuleInfo, "Successfully clicked and held the element with given parameters and values", 1)
return "passed"
except Exception:
element_attributes = Element.get_attribute('outerHTML')
CommonUtil.ExecLog(sModuleInfo, "Element Attributes: %s"%(element_attributes),3)
errMsg = "Could not click and hold your element."
return CommonUtil.Exception_Handler(sys.exc_info(),None,errMsg)
else:
CommonUtil.ExecLog(sModuleInfo, "Unable to locate your element with given data.", 3)
return "failed"
except Exception:
return CommonUtil.Exception_Handler(sys.exc_info())
#Method to right click on element; step data passed on by the user
def Context_Click_Element(step_data):
try:
sModuleInfo = inspect.stack()[0][3] + " : " + inspect.getmoduleinfo(__file__).name
Element = LocateElement.Get_Element(step_data,selenium_driver)
if Element != "failed":
try:
context_click = ActionChains(selenium_driver).context_click(Element)
context_click.perform()
CommonUtil.TakeScreenShot(sModuleInfo)
CommonUtil.ExecLog(sModuleInfo, "Successfully right clicked the element with given parameters and values", 1)
return "passed"
except Exception:
element_attributes = Element.get_attribute('outerHTML')
CommonUtil.ExecLog(sModuleInfo, "Element Attributes: %s"%(element_attributes),3)
errMsg = "Could not right click your element."
return CommonUtil.Exception_Handler(sys.exc_info(),None,errMsg)
else:
CommonUtil.ExecLog(sModuleInfo, "Unable to locate your element with given data.", 3)
return "failed"
except Exception:
return CommonUtil.Exception_Handler(sys.exc_info())
#Method to double click on element; step data passed on by the user
def Double_Click_Element(step_data):
try:
sModuleInfo = inspect.stack()[0][3] + " : " + inspect.getmoduleinfo(__file__).name
Element = LocateElement.Get_Element(step_data,selenium_driver)
if Element != "failed":
try:
double_click = ActionChains(selenium_driver).double_click(Element)
double_click.perform()
CommonUtil.TakeScreenShot(sModuleInfo)
CommonUtil.ExecLog(sModuleInfo, "Successfully double clicked the element with given parameters and values", 1)
return "passed"
except Exception:
element_attributes = Element.get_attribute('outerHTML')
CommonUtil.ExecLog(sModuleInfo, "Element Attributes: %s"%(element_attributes),3)
errMsg = "Could not double click your element."
return CommonUtil.Exception_Handler(sys.exc_info(),None,errMsg)
else:
CommonUtil.ExecLog(sModuleInfo, "Unable to locate your element with given data.", 3)
return "failed"
except Exception:
return CommonUtil.Exception_Handler(sys.exc_info())
#Method to move to middle of the element; step data passed on by the user
def Move_To_Element(step_data):
try:
sModuleInfo = inspect.stack()[0][3] + " : " + inspect.getmoduleinfo(__file__).name
Element = LocateElement.Get_Element(step_data,selenium_driver)
if Element != "failed":
try:
move = ActionChains(selenium_driver).move_to_element(Element).perform()
CommonUtil.TakeScreenShot(sModuleInfo)
CommonUtil.ExecLog(sModuleInfo, "Successfully moved to the middle of the element with given parameters and values", 1)
return "passed"
except Exception:
element_attributes = Element.get_attribute('outerHTML')
CommonUtil.ExecLog(sModuleInfo, "Element Attributes: %s"%(element_attributes),3)
errMsg = "Could not move to your element your element."
return CommonUtil.Exception_Handler(sys.exc_info(),None,errMsg)
else:
CommonUtil.ExecLog(sModuleInfo, "Unable to locate your element with given data.", 3)
return "failed"
except Exception:
return CommonUtil.Exception_Handler(sys.exc_info())
#Method to hover over element; step data passed on by the user
def Hover_Over_Element(step_data):
try:
sModuleInfo = inspect.stack()[0][3] + " : " + inspect.getmoduleinfo(__file__).name
Element = LocateElement.Get_Element(step_data,selenium_driver)
if Element != "failed":
try:
hov = ActionChains(selenium_driver).move_to_element(Element)
hov.perform()
CommonUtil.TakeScreenShot(sModuleInfo)
CommonUtil.ExecLog(sModuleInfo, "Successfully hovered over the element with given parameters and values", 1)
return "passed"
except Exception:
element_attributes = Element.get_attribute('outerHTML')
CommonUtil.ExecLog(sModuleInfo, "Element Attributes: %s"%(element_attributes),3)
errMsg = "Could not select/hover over your element."
return CommonUtil.Exception_Handler(sys.exc_info(),None,errMsg)
else:
CommonUtil.ExecLog(sModuleInfo, "Unable to locate your element with given data.", 3)
return "failed"
except Exception:
return CommonUtil.Exception_Handler(sys.exc_info())
elementaction.py 文件源码
项目:python-behave-automation-framework
作者: pradeepta02
项目源码
文件源码
阅读 18
收藏 0
点赞 0
评论 0
def hover(self, locator, replacement=None):
"""Mouse over on element
:param locator: element locator
:param replacement: if locator contains dynamic part, i.e. '$value',
it will be replaced by replacement variable
:return: None
"""
if replacement is not None:
locator = locator.replace('$value', replacement)
try:
element = self.fetch_element(locator)
mouse_hover = ActionChains(self.context.driver).move_to_element(element)
mouse_hover.perform()
except Exception as e:
self.context.logger.error("Unable to hover on locator '" + locator + "'. Error: %s" % e,
exc_info=True)
Assert.assert_fail("Unable to hover on locator '" + locator + "'")
def clk(driver, url):
"""locate and click url"""
locator = (By.XPATH, '//span[contains(text(), "{0}")]/../../../../a'.format(url))
try:
WebDriverWait(driver, 5, 0.5).until(EC.element_to_be_clickable(locator))
try:
moved_to_element = driver.find_element_by_xpath('//span[contains(text(), "{0}")]'.format(url))
target_element = driver.find_element(*locator)
ActionChains(driver).move_to_element(to_element=moved_to_element).click(target_element).perform()
sleep(1)
if 'm.baidu.com' in driver.current_url:
target_element.click()
return 1
except:
return 0
except TimeoutException:
return 0
archivematicaselenium.py 文件源码
项目:archivematica-acceptance-tests
作者: artefactual-labs
项目源码
文件源码
阅读 21
收藏 0
点赞 0
评论 0
def click_add_folder(self, folder_id):
"""Click the "Add" link in the old AM file explorer interface, i.e., to
add a directory to a transfer.
"""
block = WebDriverWait(self.driver, 10)
block.until(EC.presence_of_element_located(
(By.ID, folder_id)))
folder_elem = self.driver.find_element_by_id(folder_id)
hover = ActionChains(self.driver).move_to_element(folder_elem)
hover.perform()
time.sleep(0.25) # seems to be necessary (! jQuery animations?)
span_elem = self.driver.find_element_by_css_selector(
'div#{} span.{}'.format(folder_id,
self.add_transfer_folder_class))
hover = ActionChains(self.driver).move_to_element(span_elem)
hover.perform()
span_elem.click()
def Transfer_Clicks(browser):
try:
browser.execute_script("window.scrollBy(0,document.body.scrollHeight)", "")
# ???????Javascript??????????????
# browser.execute_script("window.scrollBy(0,5)", "")
# ????200?????????????
# ActionChains(browser).move_by_offset(0,-80).perform()
# ??????80??????????
# ActionChains(browser).click().perform()
# ??????
# ActionChains(browser).key_down(Keys.TAB).perform()
# ??tab????
# ActionChains(browser).send_keys(Keys.ENTER).perform()
# ????ENTER?
except:
pass
return "Transfer successfully \n"
def Transfer_Clicks(browser):
try:
browser.execute_script("window.scrollBy(0,document.body.scrollHeight)", "")
# ???????Javascript??????????????
# browser.execute_script("window.scrollBy(0,5)", "")
# ????200?????????????
# ActionChains(browser).move_by_offset(0,-80).perform()
# ??????80??????????
# ActionChains(browser).click().perform()
# ??????
# ActionChains(browser).key_down(Keys.TAB).perform()
# ??tab????
# ActionChains(browser).send_keys(Keys.ENTER).perform()
# ????ENTER?
except:
pass
return "Transfer successfully \n"
def Transfer_Clicks(browser):
try:
browser.execute_script("window.scrollBy(0,document.body.scrollHeight)", "")
# ???????Javascript??????????????
# browser.execute_script("window.scrollBy(0,5)", "")
# ????200?????????????
# ActionChains(browser).move_by_offset(0,-80).perform()
# ??????80??????????
# ActionChains(browser).click().perform()
# ??????
# ActionChains(browser).key_down(Keys.TAB).perform()
# ??tab????
# ActionChains(browser).send_keys(Keys.ENTER).perform()
# ????ENTER?
except:
pass
return "Transfer successfully \n"
def Transfer_Clicks(browser):
try:
browser.execute_script("window.scrollBy(0,document.body.scrollHeight)", "")
# ???????Javascript??????????????
# browser.execute_script("window.scrollBy(0,5)", "")
# ????200?????????????
# ActionChains(browser).move_by_offset(0,-80).perform()
# ??????80??????????
# ActionChains(browser).click().perform()
# ??????
# ActionChains(browser).key_down(Keys.TAB).perform()
# ??tab????
# ActionChains(browser).send_keys(Keys.ENTER).perform()
# ????ENTER?
except:
pass
return "Transfer successfully \n"
def Transfer_Clicks(browser):
try:
browser.execute_script("window.scrollBy(0,document.body.scrollHeight)", "")
# ???????Javascript??????????????
# browser.execute_script("window.scrollBy(0,5)", "")
# ????200?????????????
# ActionChains(browser).move_by_offset(0,-80).perform()
# ??????80??????????
# ActionChains(browser).click().perform()
# ??????
# ActionChains(browser).key_down(Keys.TAB).perform()
# ??tab????
# ActionChains(browser).send_keys(Keys.ENTER).perform()
# ????ENTER?
except:
pass
return "Transfer successfully \n"
def hover(self, by, value, message = None):
element = self.assertElementPresent(by, value, message = message)
self.log("Hover mouse over {0}".format(self.describeElement(by, value)))
hoverAction = ActionChains(self.driver).move_to_element(element)
if not hoverAction: self.onFail(by, value, message, "Unable to move to")
hoverAction.perform()
return element
def drag_and_drop(self, x_offset=0, y_offset=0, element_class="gt_slider_knob"):
"""????
:x_offset: ????x????
:y_offset: ????y????
:element_class: ??????CSS??
"""
dragger = self.driver.find_element_by_class_name(element_class)
action = ActionChains(self.driver)
action.drag_and_drop_by_offset(dragger, x_offset, y_offset).perform()
# ??????????????????
time.sleep(8)
def move_to_element(self, element_class="gt_slider_knob"):
"""??????????
:element: ??????
"""
time.sleep(3)
element = self.driver.find_element_by_class_name(element_class)
action = ActionChains(self.driver)
action.move_to_element(element).perform()
time.sleep(4.5)
def test_teacher_add_an_ext_assignment_by_drag_and_drop_146504(self):
"""
Steps:
Click on the 'Add Assignment' menu
Click and Drag 'Add External Assignment' to a chosen due date
Expected result:
User is taken to 'Add External Assignment' page, and due date is filled in as date dragged to
"""
self.ps.test_updates['name'] = 'tutor_external_teacher' \
+ inspect.currentframe().f_code.co_name[
4:]
self.ps.test_updates['tags'] = ['tutor', 'external', 'teacher',
'146504']
self.ps.test_updates['passed'] = False
# Test verification
self.teacher.assign.open_assignment_menu(self.teacher.driver)
external_tab = self.teacher.find(
By.LINK_TEXT, 'Add External Assignment'
)
due_date = self.teacher.wait.until(
expect.element_to_be_clickable(
(By.XPATH, '//div[contains(@class,"Day--upcoming")]')
)
)
actions = ActionChains(self.teacher.driver)
actions.move_to_element(external_tab)
actions.drag_and_drop(external_tab, due_date).perform()
sleep(3)
assert ('external/new' in self.teacher.current_url()), \
'not at Add External Assignment page'
self.ps.test_updates['passed'] = True
# Case C146505 017 - Teacher | Info Icons
def test_teacher_add_an_event_by_drag_and_drop_162187(self):
self.ps.test_updates['name'] = 'tutor_event_teacher' \
+ inspect.currentframe().f_code.co_name[4:]
self.ps.test_updates['tags'] = ['tutor', 'event', 'teacher',
'162187']
self.ps.test_updates['passed'] = False
# Test verification
self.teacher.assign.open_assignment_menu(self.teacher.driver)
event_tab = self.teacher.find(
By.LINK_TEXT, 'Add Event'
)
due_date = self.teacher.wait.until(
expect.element_to_be_clickable(
(By.XPATH, '//div[contains(@class,"Day--upcoming")]')
)
)
actions = ActionChains(self.teacher.driver)
actions.move_to_element(event_tab)
actions.drag_and_drop(event_tab, due_date).perform()
sleep(3)
assert ('event/new' in self.teacher.current_url()), \
'not at Add Event page'
self.ps.test_updates['passed'] = True
# Case C162188 017 Teacher| Get assignment link test info icons