def __init__(self, parent=None): self.clusterName = HtmlElement(xpath="./div[@class='cluster-name']", element_name="Cluster name") self.status = HtmlElement(xpath="./div[@class='cluster-status']", element_name="Status") AbstractView.__init__(self, parent)
def __init__(self, parent=None): self.logo = Link( xpath=".//div[@class='navigation-bar']//li[@class='product-logo']", element_name="Logo") self.nodesTotal = HtmlElement( xpath=".//div[@class='navigation-bar']//div[@class='statistic']" "/div[@class='stat-count'][1]", element_name="Nodes total") self.nodesUnallocated = HtmlElement( xpath=".//div[@class='navigation-bar']//div[@class='statistic']" "/div[@class='stat-count'][1]", element_name="Nodes unallocated") self.notificationsLink = Link( xpath=".//div[@class='navigation-bar']" "//li[contains(@class, 'notifications')]", element_name="Notifications") self.openStackEnvironmentsLink = Link( xpath=".//div[@class='navigation-bar']" "//li[contains(.,'OpenStack Environments')]", element_name="OpenStack Environments") self.releases = Link(xpath=".//div[@class='navigation-bar']" "//li[contains(.,'Releases')]/a", element_name="Releases") self.supportLink = Link(xpath=".//div[@class='navigation-bar']" "//li[contains(.,'OpenStack Support')]", element_name="OpenStack Support") AbstractView.__init__(self, parent)
def __init__(self, parent=None): self.name = HtmlElement(xpath=".//div[@class='volume-group-name']", element_name="name") self.size = HtmlElement(xpath=".//div[@class='volume-group-size']", element_name="name") self.close = Link(xpath=".//div[@class='close-btn']", element_name="close") BasePage.__init__(self, parent)
def __init__(self, table): self.rows = [ HtmlElement(element=element) for element in self.get_action_bot().find_elements( by=By.XPATH, value="./tbody/tr", parent=table ) ] self.cell = HtmlElement( xpath="./tbody/tr[{row}]/td[{column}]", element_name="cell" ) BasePage.__init__(self, parent=table)
def __init__(self, parent=None): self.addNodes = Link( xpath="//div//a[@class='btn btn-success btn-add-nodes']", element_name="Add nodes" ) self.deleteNodes = Button( xpath="//button[contains(@class,'btn-delete-nodes')]", element_name="Delete nodes" ) self.reassignRoles = Button( xpath="//button[contains(@class, 'btn-assign-roles')]" "and contains(text(),'Reassign Roles')]", element_name="Reassign roles" ) self.assignRoles = Button( xpath="//button[contains(" "@class, 'btn btn-success btn-assign-roles') " "and contains(text(),'Assign Roles')]", element_name="Assign roles" ) self.environment_status = HtmlElement( xpath="//div[@class='environment-status']", element_name="Environment status" ) self.groupBy = Select( xpath="//div[@class='cluster-toolbar-item nodes-filter']" "//select[@name='grouping']", element_name="Select group by" ) self.backToEnvironmentNodeList = Button( xpath="//div[@class='btn btn-go-to-cluster']", element_name="Back to Environment Node List" ) self.nodelist = HtmlElement( xpath="//div[@class='node-groups' and " "contains(div[@class='row-fluid node-group-header']" "//h4/text(),'{role}')]", element_name="'{role}' block" ) self.deploymentMode = Button( xpath="//button[contains(@class,'btn btn-cluster-actions')]", element_name="Deployment mode" ) self.alertError = HtmlElement( xpath="//div[contains(@class, 'alert-block') " "and contains(@class, 'global-error')]/p", element_name="Alert Error" ) AbstractView.__init__(self, parent)
def __init__(self): self.configure = Button( xpath="./tbody/tr[{row}]/td[{column}]/button", element_name="Configure" ) self.progress = HtmlElement( xpath="./tbody/tr[{row}]/td[{column}]" "//div[contains(@class, 'progress')]", element_name="progress bar" ) Table.__init__(self, HtmlElement( xpath=".//table[contains(@class, 'releases-table')]", element_name="Releases table" ).get_element())
def __init__(self): self.disk_box = HtmlElement( xpath=".//div[@class='disk-box disk' and " "contains(div[@class='disk-box-name pull-left'],'{name}')]", element_name="Disk box {name}") AbstractView.__init__(self)
def __init__(self, parent=None): self.name = HtmlElement( xpath=".//div[@class='node-name']//p[@class='node-renameable']", element_name="Cluster name") self.role = HtmlElement(xpath=".//div[@class='roles']//li", element_name="Cluster role") self._checkbox = Checkbox(xpath=".//label[@class='node-checkbox']" "//div[@class='custom-tumbler']/input", element_name="Checkbox") self.status = HtmlElement(xpath=".//div[@class='node-status']", element_name="Status") self.details = HtmlElement(xpath=".//div[@class='node-details']", element_name="Node details icon") AbstractView.__init__(self, parent)
def __init__(self, parent=None): self.checkbox_role = Checkbox( xpath="//input[@type='checkbox' and @value='{role}']", element_name="Checkbox '{role}'") self.assign = Button( xpath=".//button[@class='btn btn-success btn-assign']", element_name="Assign button") self.conflict_role = HtmlElement( xpath=".//div[@class='role-conflict '{role}'']", element_name="Conflict '{role}'") AbstractView.__init__(self, parent)
def __init__(self, parent=None): self.name = HtmlElement(xpath=".//div[@class='volume-group-box-name']", element_name="name") self.size = Input( xpath=".//div[@class='volume-group-box-input']/input", element_name="size") self.use_all_unallocated = Link( xpath=".//div[@class='use-all-unallocated']", element_name="Use all unallocated") BasePage.__init__(self, parent)
def __init__(self, parent=None): self.tab = HtmlElement( xpath="//div[@id='content']//ul[contains(@class, 'nav nav-tabs')]" "/li/a[b[@class='{}']]", element_name="Tab") self.deployChanges = Button( xpath="//button[contains(@class, 'deploy-btn')]", element_name="Deploy Changes") self.deploymentBar = HtmlElement( xpath="//li[contains(@class, 'deployment-control')]" "//div[contains(@class, 'progress-deploy')]", element_name="Deployment progress") self.successMessage = HtmlElement( xpath="//div[contains(@class, 'global-success')]/p", element_name="Success message") self.errorMessage = HtmlElement( xpath="//div[contains(@class, 'global-error')]/p", element_name="Error message") AbstractView.__init__(self, parent)
def __init__(self, parent=None): self.environment = HtmlElement( xpath="//div[@id='content']//div[@class='cluster-list']" "//a[contains(@class, 'clusterbox') " "and div[contains(@class, 'cluster-name') " "and text()='{name}']]", element_name="Environment {name}" ) self.newEnvironment = Link( xpath="//div[@id='content']//div[@class='cluster-list']" "//div[contains(@class, 'clusterbox create-cluster')]", element_name="New environment") AbstractView.__init__(self, parent) self.url = "#clusters"
def __init__(self, parent=None): self.caption = HtmlElement( xpath=".//div[contains(@class,'disk-box-name')]", element_name="Caption") self.total_space = HtmlElement( xpath=".//div[contains(@class,'disk-box-size')]", element_name="Total space") self.bootable_marker = HtmlElement( xpath=".//div[contains(@class,'disk-box-name')]/span", element_name="Disk's bootable marker") self.volume_group = HtmlElement( xpath=".//div[contains(@class,'volume-group') and " ".//div[@class='volume-group-name']='{name}']", element_name="Volume group {name}") self.disk_parameter = HtmlElement( xpath=".//div[contains(@class,'disk-map-details-item')]", element_name="Disk parameter {name}") self.disk_map_details = HtmlElement( xpath=".//div[contains(@class,'disk-map-details-item') and " "div[@class='disk-map-details-name']='{name}']/" "div[@class='disk-map-details-parameter']", element_name="Disk parameter {name}") self.volume_group_box = HtmlElement( xpath=".//div[contains(@class,'volume-group-box') and " "div[@class='volume-group-box-name']='{name}']", element_name="Volume group box {name}") self.make_bootable = Button(xpath=".//button[text()='Make Bootable']", element_name="Make Bootable") self.disk_map = HtmlElement( xpath=".//div[@class='disk-map-short disk-map-full']", element_name="Disk map") BasePage.__init__(self, parent)
def __init__(self, parent=None): self.log_node = Select( xpath=".//div[contains(@class,'log-type-filter')]/select", element_name="Logs") self.source = Select( xpath=".//div[contains(@class,'log-source-filter')]/select", element_name="Source") self.level = Select( xpath=".//div[contains(@class,'log-level-filter')]/select", element_name="Min. level") self.show_button = Button( xpath=".//button[contains(@class,'show-logs-btn')]", element_name="Show") self.table_logs = HtmlElement( xpath=".//table[contains(@class,'table-logs')]", element_name="Logs table") AbstractView.__init__(self, parent)
def __init__(self): AbstractDialog.__init__(self) self.alert_message = HtmlElement( xpath=".//div[@class='alert alert-error']", element_name="Alert error message")
def __init__(self, parent=None): self.node = HtmlElement( xpath=".//div[(@class='node' or @class='node checked') and " ".//div[@class='node-name' and .//div//text()='{name}']]", element_name="Node [{name}]") AbstractView.__init__(self, parent)
def get_roles(self): roles_elements = ActionBot().find_elements( By.XPATH, ".//div[@class='roles']//li") return [HtmlElement(element=we).get_value() for we in roles_elements]
def __init__(self): self.activationKey = Input( xpath=".//input[@name='activation_key']", element_name="Activation key" ) self.deploymentMode = Radio( xpath=".//div[contains(@class, 'mode-control-group')]" "//label[div[contains(@class, 'parameter-name') " "and text()='{mode}']]", element_name="Deployment mode [{mode}]" ) self.downloadType = Radio( xpath=".//div[contains(@class, 'custom-tumbler') " "and input[@type='radio' and @value='{type}']]", element_name="Download type [{type}]" ) self.instruction = HtmlElement( xpath=".//div[@class='alert alert-info rhel-license hide']", element_name="Instruction to deploy RHOS" ) self.message_configuration_ready = HtmlElement( xpath=".//div[contains(text(), 'Configuration is finished and " "now you can create your cluster!')]", element_name="Message: ready to create environment" ) self.name = Input( xpath=".//input[@name='name']", element_name="Name" ) self.nameErrorMessage = HtmlElement( xpath="//div[contains(@class,'control-group') and " ".//input[contains(@name, 'name')]]" "//span[@class='help-inline']", element_name="name error message" ) self.parameter_radio = Radio( xpath=".//label[contains(@class,'parameter-box') and " "div[contains(@class,'parameter-name')]/text()='{name}']", element_name="Parameter {name}" ) self.parameter_checkbox = Checkbox( xpath=".//label[contains(@class,'parameter-box') and " "div[contains(@class,'parameter-name')]='{name}']//" "input[@type='checkbox']", element_name="Parameter {name}") self.password = Input( xpath=".//input[@name='password']", element_name="Password" ) self.releaseDescription = HtmlElement( xpath=".//div[@class='release-description help-block']", element_name="Release description" ) self.serverHostname = Input( xpath=".//input[@name='satellite']", element_name="Satellite server hostname" ) self.storage_cinder = Radio( xpath=".//div[contains(@class, 'span6') and contains(./h5/text(), " "'Cinder backend')]//label[contains(@class,'parameter-box') " "and div[contains(@class,'parameter-name')]" "/text()='{name}']", element_name="Cinder backend {name}" ) self.storage_glance = Radio( xpath=".//div[contains(@class, 'span6') and contains(./h5/text(), " "'Glance backend')]//label[contains(@class,'parameter-box') " "and div[contains(@class,'parameter-name')]" "/text()='{name}']", element_name="Glance backend {name}" ) self.username = Input( xpath=".//input[@name='username']", element_name="Username" ) self.version = Select( xpath=".//select[@name='release']", element_name="Version" ) AbstractDialog.__init__(self)
def __init__(self, parent=None): self.save_settings = Button( xpath=".//div[contains(@class, 'apply-btn')]", element_name="Save Settings") self.cancel_changes = Button( xpath=".//div[contains(@class, 'btn-revert-changes')]", element_name="Cancel Changes") self.verify_networks = Button( xpath=".//div[contains(@class, 'verify-networks-btn')]", element_name="Verify networks") self.flat_dhcp_manager = Radio(xpath=".//div[@class='custom-tumbler' " "and input[@value='FlatDHCPManager']]", element_name="FlatDHCP Manager") self.vlan_manager = Radio(xpath=".//div[@class='custom-tumbler' " "and input[@value='VlanManager']]", element_name="Vlan Manager") self.ip_range_row = HtmlElement( xpath=".//div[@class='{name}']/" "div[contains(@class,'range-row ')][{num}]", element_name="Range row {name} [{num}]") self.public_vlan_id = Input( xpath=".//input[@name='public-vlan_start']", element_name="Public VLAN ID") self.public_netmask = Input(xpath=".//input[@name='public-netmask']", element_name="Public Netmask") self.public_gateway = Input(xpath=".//input[@name='public-gateway']", element_name="Public Gateway") self.management_cidr = Input(xpath=".//input[@name='management-cidr']", element_name="Management CIDR") self.management_vlan_id = Input( xpath=".//input[@name='management-vlan_start']", element_name="Management VLAN ID") self.storage_cidr = Input(xpath=".//input[@name='storage-cidr']", element_name="Storage CIDR") self.storage_vlan_id = Input( xpath=".//input[@name='storage-vlan_start']", element_name="Storage VLAN ID") self.vm_networks_cidr = Input(xpath=".//input[@name='fixed-cidr']", element_name="VM Networks CIDR") self.vm_networks_vlan_id = Input( xpath=".//input[@name='fixed-vlan_start']", element_name="VM Networks VLAN ID") self.vm_networks_vlan_id_range_start = Input( xpath=".//input[@name='fixed-vlan_range-start']", element_name="VM Networks VLAN ID range start") self.vm_networks_vlan_id_range_end = Input( xpath=".//input[@name='fixed-vlan_range-end']", element_name="VM Networks VLAN ID range end") self.vm_networks_number_of_networks = Input( xpath=".//input[@name='fixed-amount']", element_name="VM Networks. Number of networks") self.vm_networks_size_of_networks = Select( xpath=".//select[@name='fixed-network_size']", element_name="VM Networks. Size of networks") self.verify_networks = Button( xpath=".//button[contains(@class,'verify-networks-btn')]", element_name="Verify networks") self.cancel_changes = Button( xpath=".//button[contains(@class, 'btn-revert-changes')]", element_name="Cancel changes") self.save_settings = Button( xpath=".//button[contains(@class, 'btn-success apply-btn')]", element_name="Save settings") AbstractView.__init__(self, parent)