本文整理汇总了Python中selenium.webdriver.common.action_chains.ActionChains.context_click方法的典型用法代码示例。如果您正苦于以下问题:Python ActionChains.context_click方法的具体用法?Python ActionChains.context_click怎么用?Python ActionChains.context_click使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类selenium.webdriver.common.action_chains.ActionChains
的用法示例。
在下文中一共展示了ActionChains.context_click方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _context_click
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
def _context_click(self, name, offset=15):
""" Display context menu. """
chain = ActionChains(self.browser)
chain.move_to_element_with_offset(self.root, offset, 15)
chain.context_click(None)
chain.perform()
time.sleep(0.5)
self(name).click()
示例2: context_click
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
def context_click(self, elem):
"""
Context click action on elem.
Parameters
----------
elem: `WebElement`
The WebElement to be double clicked on.
"""
a_chain = ActionChains(self.d)
a_chain.context_click(elem).perform()
示例3: test_tool_showHideClip
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
def test_tool_showHideClip(self):
driver = self.driver
# Wait for the image window to be present (ensures browser is fully loaded)
imageWindow = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//div[@qxclass='skel.widgets.Window.DisplayWindowImage']")))
toolBar = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@qxclass='skel.widgets.Menu.ToolBar']")))
self.assertIsNotNone( toolBar, "Could not find the tool bar")
actionChains = ActionChains(driver)
actionChains.context_click(toolBar).perform()
# Click the customize item on the menu
customizeButton = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='Customize...']/..")))
self.assertIsNotNone( customizeButton, "Could not find the customize button in context")
ActionChains(driver).click( customizeButton).perform()
# First make sure no clips are checked
clippingButton = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='Clipping']/preceding-sibling::div/div")))
self.assertIsNotNone( clippingButton, "Could not clipping button in customize dialog")
styleAtt = clippingButton.get_attribute( "style");
print "Style", styleAtt
if "checked.png" in styleAtt:
print "Clipping checked"
clipParent = clippingButton.find_element_by_xpath( '..')
ActionChains(driver).click( clipParent ).perform()
# Check that there are no clip buttons on the toolbar by looking for labels with a %
self._verifyClips( toolBar, 0 )
# Open the Clipping folder by performing 2 clicks so that the 98% clip button is visible
# clippingTreeItem = clippingButton.find_element_by_xpath( '../..')
clippingOpenButton = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='Clipping']/../div[@qxclass='qx.ui.tree.core.FolderOpenButton']")))
self.assertIsNotNone( clippingOpenButton, "Could not find open folder button for clipping")
ActionChains( driver ).click( clippingOpenButton ).perform()
clipOpenButton = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='Clips']/../div[@qxclass='qx.ui.tree.core.FolderOpenButton']")))
self.assertIsNotNone( clipOpenButton, "Could not find open folder button for clip")
driver.execute_script( "arguments[0].scrollIntoView(true);", clipOpenButton)
ActionChains( driver ).click( clipOpenButton ).perform()
# Now click the 98% clip button on the customize dialog
clipButton = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='98%']/preceding-sibling::div/div/..")))
self.assertIsNotNone( clipButton, "Could not find clip button in customize dialog")
ActionChains(driver).click( clipButton).perform()
# Verify that the 98% clip appears on the tool bar
clipRadio = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='98%']")))
self.assertIsNotNone( clipRadio, "Clip radio did not appear on tool bar")
# Remove the 98% clip by unclicking the button on the customize dialog
ActionChains(driver).click( clipButton).perform()
# Verify the all clips are gone
self._verifyClips( toolBar, 0 )
示例4: context_click
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
def context_click(self, locator):
if locator.find('link=') == 0:
locator_string = locator[5:len(locator)]
element = self.sel.find_element_by_link_text(locator_string)
elif locator.find('xpath=') == 0: # array of elements
element = self.get_xpath_element(locator)
else:
element = self.sel.find_element_by_xpath(locator)
if element != None:
action = ActionChains(self.sel)
action.context_click(element)
action.perform()
示例5: test_05_context_click
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
def test_05_context_click(self):
driver = self.driver
try:
elm_catering_charges = driver.find_element_by_link_text("Catering Charges")
action_chain = ActionChains(driver)
# open link in a new tab with context click
builder = action_chain.context_click(on_element=elm_catering_charges)
sleep(0.5)
builder.send_keys(Keys.DOWN).send_keys(Keys.RETURN).send_keys(Keys.DOWN).send_keys(Keys.ESCAPE).perform()
sleep(1)
window_handles = driver.window_handles
print driver.current_window_handle
driver.switch_to.window(window_handles[-1])
print driver.current_window_handle
driver.close()
driver.switch_to.window(window_handles[0])
except EX.StaleElementReferenceException:
print self._testMethodName + " - Error at line number : " + sys.exc_traceback.tb_lineno
print sys.exc_info()
except NoSuchElementException:
print self._testMethodName + " - Error at line number : " + sys.exc_traceback.tb_lineno
print sys.exc_info()
except EX.NoSuchWindowException:
print self._testMethodName + " - Error at line number : " + sys.exc_traceback.tb_lineno
print sys.exc_info()
示例6: triggerNodeEvent
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
def triggerNodeEvent(self, event):
if self.graph == 'network':
i = 0
else:
i = 1
selector = '#graph' + str(i) + ' > g > g:first-child > g:first-child'
elem = self.driver.find_element_by_css_selector(selector)
action = ActionChains(self.driver)
if event == 'click':
action.click(elem)
elif event == 'right':
action.context_click(elem)
else:
action.move_to_element(elem)
action.perform()
示例7: copy_img
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
def copy_img(self):
get_folders = self.driver.find_elements_by_css_selector("*[pr-test='FolderID']")
for folder in get_folders:
actions = ActionChains(self.driver)
actions.context_click(folder).perform()
time.sleep(3)
copy = self.driver.find_elements_by_link_text("копіювати")
copy[0].click()
time.sleep(3)
actions = ActionChains(self.driver)
actions.context_click(folder).perform()
time.sleep(3)
paste = self.driver.find_elements_by_link_text("вставити")
paste[0].click()
time.sleep(3)
# print(get_folders.text)
print(folder.text)
示例8: layout_custom
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
def layout_custom(unittest, driver, rows, cols ):
timeout = selectBrowser._getSleep()
# Now right click the toolbar
toolBar = driver.find_element_by_xpath( "//div[@qxclass='skel.widgets.Menu.ToolBar']")
actionChains = ActionChains(driver)
actionChains.context_click(toolBar).perform()
# Find and click the customize button
customizeButton = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='Customize...']/..")))
ActionChains(driver).click( customizeButton).perform()
# Uncheck clipping
layoutButton = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='Layout']/preceding-sibling::div/div")))
styleAtt = layoutButton.get_attribute( "style");
print "Style", styleAtt
if not "checked.png" in styleAtt:
print "Clipping checked"
layoutParent = layoutButton.find_element_by_xpath( '..')
ActionChains(driver).click( layoutParent ).perform()
# Close the toolbar
closeButton = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='Close']/..")))
ActionChains(driver).click( closeButton).perform()
# Click the customize button on the toolbar
customLayoutButton = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='Custom Layout']")))
ActionChains(driver).click( customLayoutButton ).perform()
# Get the row count spin and set its value.
rowSpin = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[starts-with(@id,'customLayoutRows')]/input")))
rowSpin.send_keys( Keys.BACK_SPACE )
rowSpin.send_keys( str(rows) )
# Get the column count spin and set its value.
colSpin = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[starts-with(@id,'customLayoutCols')]/input")))
colSpin.send_keys( str(cols) )
colSpin.send_keys( Keys.ARROW_LEFT )
colSpin.send_keys( Keys.BACK_SPACE )
# Close the custom layout dialog
closeButton = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[starts-with(@id,'customLayoutOK')]")))
ActionChains(driver).click(closeButton).perform()
time.sleep(timeout)
示例9: RightClickSvgLine
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
def RightClickSvgLine():
global driver
global bdrive
bdrive = os.environ.get('BrSelect')
if bdrive == 'chrome':
actionChains = ActionChains(driver)
arrow = driver.find_element_by_xpath(wcjoinarrow)
actionChains.context_click(arrow).perform()
elif bdrive == 'IE' or 'firefox':
elem = WebDriverWait(driver, 60).until(EC.element_to_be_clickable((By.ID, 'svg01-line')))
x = 0
y = 0
x1 = elem.get_attribute("x1")
x2 = elem.get_attribute("x2")
x = ((float(x1)+float(x2))/2)+5
y1 = elem.get_attribute("y1")
y2 = elem.get_attribute("y2")
y = ((float(y1)+float(y2))/2)+5
ActionChains(driver).move_to_element_with_offset(elem, x, y).perform()
ActionChains(driver).context_click().perform()
示例10: test_menu_hideClipping
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
def test_menu_hideClipping(self):
driver = self.driver
# Click on an CasaImageLoader Window so that clipping is available on the menu.
imageWindow = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//div[@qxclass='skel.widgets.Window.DisplayWindowImage']")))
ActionChains(driver).click(imageWindow).perform()
# Verify that clipping commands can be found on the menu bar.
menuBar = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@qxclass='skel.widgets.Menu.MenuBar']")))
self.assertIsNotNone( menuBar, "Could not find the menu bar")
clipping = menuBar.find_elements_by_xpath( "./div[contains(text(), 'Clipping')]" )
self.assertIsNotNone( clipping, "Clipping not present on menu bar");
# Now right click the toolbar
toolBar = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@qxclass='skel.widgets.Menu.ToolBar']")))
self.assertIsNotNone( toolBar, "Could not find the tool bar")
actionChains = ActionChains(driver)
actionChains.context_click(toolBar).perform()
# Find and click the customize button
customizeButton = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='Customize...']/..")))
self.assertIsNotNone( customizeButton, "Could not find the customize button in context")
ActionChains(driver).click( customizeButton).perform()
# Uncheck clipping
clippingButton = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[text()='Clipping']/preceding-sibling::div/div")))
self.assertIsNotNone( clippingButton, "Could not clipping button in customize dialog")
styleAtt = clippingButton.get_attribute( "style");
print "Style", styleAtt
if "checked.png" in styleAtt:
print "Clipping checked"
clipParent = clippingButton.find_element_by_xpath( '..')
ActionChains(driver).click( clipParent ).perform()
# Check that the clipping menu item is no longer available
try:
clipButton = menuBar.find_element_by_xpath( "./div[contains(text(), 'Clipping')]" )
self.assertTrue( False, "Should not be able to locate clipping button")
except Exception:
print "Test succeeded because we should not be able to find clipping"
示例11: delete_folder
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
def delete_folder(self, new_folder_id):
self.driver.find_elements_by_css_selector("*[pr-test='GoBackFolder']")[0].click()
time.sleep(3)
get_folders = self.driver.find_elements_by_css_selector("*[pr-test='FolderID']")
new_folder_name = ('new one')
for folder in get_folders:
# print(folder.text)
if folder.text == new_folder_name:
actions = ActionChains(self.driver)
actions.context_click(folder).perform()
time.sleep(5)
re = self.driver.find_elements_by_link_text("remove")
re[0].click()
time.sleep(5)
self.driver.find_elements_by_css_selector("*[pr-test='ConfirmRemove']")[0].click()
time.sleep(3)
self.assertion(new_folder_id)
break
示例12: ActionChains
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
from selenium import webdriver
import time
import requests
from selenium.webdriver.common.action_chains import ActionChains
# open chrome
browser = webdriver.Chrome()
browser.get("http://v.douyin.com/duAERB/")
time.sleep(1)
# find play button
playButton = browser.find_element_by_css_selector('div.play-btn')
playButton.click()
time.sleep(5)
# 此处涉及右键保存
# 参考:https://www.cnblogs.com/tobecrazy/p/3969390.html
player = browser.find_element_by_css_selector('video.player')
actions = ActionChains(browser)
actions.move_to_element(player)
actions.context_click()
actions.perform()
示例13: WebDriverElement
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
#.........这里部分代码省略.........
@property
def visible(self):
return self._element.is_displayed()
@property
def html(self):
return self['innerHTML']
@property
def outer_html(self):
return self['outerHTML']
def find_by_css(self, selector, original_find=None, original_query=None):
find_by = original_find or 'css'
query = original_query or selector
elements = self._element.find_elements_by_css_selector(selector)
return ElementList(
[self.__class__(element, self.parent) for element in elements], find_by=find_by, query=query)
def find_by_xpath(self, selector, original_find=None, original_query=None):
elements = ElementList(self._element.find_elements_by_xpath(selector))
return ElementList(
[self.__class__(element, self.parent) for element in elements], find_by='xpath', query=selector)
def find_by_name(self, name):
elements = ElementList(self._element.find_elements_by_name(name))
return ElementList(
[self.__class__(element, self.parent) for element in elements], find_by='name', query=name)
def find_by_tag(self, tag):
elements = ElementList(self._element.find_elements_by_tag_name(tag))
return ElementList(
[self.__class__(element, self.parent) for element in elements], find_by='tag', query=tag)
def find_by_value(self, value):
selector = '[value="%s"]' % value
return self.find_by_css(selector, original_find='value', original_query=value)
def find_by_text(self, text):
selector = '//*[text()="%s"]' % text
return self.find_by_xpath(selector, original_find='text', original_query=text)
def find_by_id(self, id):
elements = ElementList(self._element.find_elements_by_id(id))
return ElementList(
[self.__class__(element, self.parent) for element in elements], find_by='id', query=id)
def has_class(self, class_name):
return bool(re.search(r'(?:^|\s)' + re.escape(class_name) + r'(?:$|\s)', self['class']))
def mouse_over(self):
"""
Performs a mouse over the element.
Currently works only on Chrome driver.
"""
self.action_chains.move_to_element(self._element)
self.action_chains.perform()
def mouse_out(self):
"""
Performs a mouse out the element.
Currently works only on Chrome driver.
"""
self.action_chains.move_by_offset(5000, 5000)
self.action_chains.perform()
mouseover = warn_deprecated(mouse_over, 'mouseover')
def double_click(self):
"""
Performs a double click in the element.
Currently works only on Chrome driver.
"""
self.action_chains.double_click(self._element)
self.action_chains.perform()
def right_click(self):
"""
Performs a right click in the element.
Currently works only on Chrome driver.
"""
self.action_chains.context_click(self._element)
self.action_chains.perform()
def drag_and_drop(self, droppable):
"""
Performs drag a element to another elmenet.
Currently works only on Chrome driver.
"""
self.action_chains.drag_and_drop(self._element, droppable._element)
self.action_chains.perform()
def __getitem__(self, attr):
return self._element.get_attribute(attr)
示例14: doSearch
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
#.........这里部分代码省略.........
l_finished = True
continue
except EX.NoSuchElementException:
print('There should be results')
try:
# reformulation
l_reformulation = l_driver.find_element_by_xpath(
'//span[@class="denombrement"]/strong[@id="SEL-nbresultat"]')
l_resultCount = l_reformulation.text
print('l_resultCount:', l_resultCount)
except EX.NoSuchElementException:
print('No reformulation ?! ...')
l_articleList = []
try:
for l_company in l_driver.find_elements_by_xpath('//h2[@class="company-name"]/../../../..'):
l_articleId = l_company.get_attribute('id')
print('l_articleId:', l_articleId)
l_articleList += [l_articleId]
except EX.NoSuchElementException:
print('[04] Something is badly wrong (Element not found) ...')
return 0
try:
l_article = 0
for l_articleId in l_articleList:
if killPopup(l_driver):
print('Popup Killed, waiting for 10 s.')
time.sleep(10)
print('+ l_articleId:', l_articleId)
l_company = l_driver.find_element_by_xpath(
'//article[@id="{0}"]//h2[@class="company-name"]/a[2]'.format(l_articleId))
#l_driver.execute_script("return arguments[0].scrollIntoView();", l_company)
l_name = l_company.text
print('Fetching:', l_name)
l_driver.execute_script("return arguments[0].scrollIntoView();", l_company)
l_driver.execute_script("window.scrollBy(0, -300);")
# Save the window opener (current window, do not mistaken with tab... not the same)
l_mainWindow = l_driver.current_window_handle
# l_company.send_keys(Keys.CONTROL + Keys.RETURN)
# scroll to it, to make it visible, and then click it
l_actions = ActionChains(l_driver)
l_actions.move_to_element(l_company)
l_actions.context_click()
l_actions.send_keys(Keys.ARROW_DOWN)
l_actions.send_keys(Keys.ENTER)
l_actions.perform()
# Switch tab to the new tab, which we will assume is the next one on the right
l_driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)
# Put focus on current window which will, in fact, put focus on the current visible tab
l_driver.switch_to_window(l_mainWindow)
if doOneCompany(l_driver, l_fOutMain, l_fOutSecondary, l_count):
l_count += 1
CommonFunctions.randomWait(p_minDelay, p_maxDelay)
# Close current tab
l_driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 'w')
# Put focus on current window which will be the window opener
l_driver.switch_to_window(l_mainWindow)
except EX.NoSuchElementException:
print('[05] Something is badly wrong (Element not found) ...')
return 0
# locate the next button and click it
try:
l_next = l_driver.find_element_by_id('pagination-next')
# scroll to it, to make it visible, and then click it
l_actions = ActionChains(l_driver)
l_actions.move_to_element(l_next)
l_actions.click()
l_actions.perform()
except EX.NoSuchElementException:
print('No more results')
l_finished = True
print('Number of items retrieved:', l_count)
l_fOutMain.close()
l_fOutSecondary.close()
l_driver.quit()
return l_count
示例15: WebDriverElement
# 需要导入模块: from selenium.webdriver.common.action_chains import ActionChains [as 别名]
# 或者: from selenium.webdriver.common.action_chains.ActionChains import context_click [as 别名]
#.........这里部分代码省略.........
def click(self):
self._element.click()
def check(self):
if not self.checked:
self._element.click()
def uncheck(self):
if self.checked:
self._element.click()
@property
def checked(self):
return self._element.is_selected()
selected = checked
@property
def visible(self):
return self._element.is_displayed()
def find_by_css(self, selector, original_find=None, original_query=None):
find_by = original_find or "css"
query = original_query or selector
elements = self._element.find_elements_by_css_selector(selector)
return ElementList([self.__class__(element, self.parent) for element in elements], find_by=find_by, query=query)
def find_by_xpath(self, selector):
elements = ElementList(self._element.find_elements_by_xpath(selector))
return ElementList(
[self.__class__(element, self.parent) for element in elements], find_by="xpath", query=selector
)
def find_by_name(self, name):
elements = ElementList(self._element.find_elements_by_name(name))
return ElementList([self.__class__(element, self.parent) for element in elements], find_by="name", query=name)
def find_by_tag(self, tag):
elements = ElementList(self._element.find_elements_by_tag_name(tag))
return ElementList([self.__class__(element, self.parent) for element in elements], find_by="tag", query=tag)
def find_by_value(self, value):
selector = '[value="%s"]' % value
return self.find_by_css(selector, original_find="value", original_query=value)
def find_by_id(self, id):
elements = ElementList(self._element.find_elements_by_id(id))
return ElementList([self.__class__(element, self.parent) for element in elements], find_by="id", query=id)
def mouse_over(self):
"""
Performs a mouse over the element.
Currently works only on Chrome driver.
"""
self.action_chains.move_to_element(self._element)
self.action_chains.perform()
def mouse_out(self):
"""
Performs a mouse out the element.
Currently works only on Chrome driver.
"""
self.action_chains.move_by_offset(5000, 5000)
self.action_chains.perform()
mouseover = warn_deprecated(mouse_over, "mouseover")
mouseout = warn_deprecated(mouse_out, "mouseout")
def double_click(self):
"""
Performs a double click in the element.
Currently works only on Chrome driver.
"""
self.action_chains.double_click(self._element)
self.action_chains.perform()
def right_click(self):
"""
Performs a right click in the element.
Currently works only on Chrome driver.
"""
self.action_chains.context_click(self._element)
self.action_chains.perform()
def drag_and_drop(self, droppable):
"""
Performs drag a element to another elmenet.
Currently works only on Chrome driver.
"""
self.action_chains.drag_and_drop(self._element, droppable._element)
self.action_chains.perform()
def __getitem__(self, attr):
return self._element.get_attribute(attr)