drop-down-menu 相关问题

用户界面控件GUI元素,类似于列表框,允许用户从列表中选择一个值。当下拉列表处于非活动状态时,它会显示单个值。激活后,它会显示(下拉)一个值列表,用户可以从中选择一个值。

如何使联系表 7 中的“请选择...”不可选择? (已回答)

如何使下拉菜单中的“请选择...”选项不可选择?我正在这个表单测试器中为联系表单 7 条件字段进行编码。这是我的 c...

回答 1 投票 0

如何使联系表 7 中的“请选择...”不可选择? (first_as_label 不起作用)

如何使下拉菜单中的“请选择...”选项不可选择?我正在这个表单测试器中为联系表单 7 条件字段进行编码。这是我的 c...

回答 1 投票 0

如何使联系表 7 中的“请选择...”不可选择?

如何使下拉菜单中的“请选择...”选项不可选择?我正在这个表单测试器中为联系表单 7 条件字段进行编码。这是我的 c...

回答 1 投票 0

如何在联系表 7 条件字段中使“请选择...”不可选择?

如何使下拉菜单中的“请选择...”选项不可选择?我正在这个表单测试器中为联系表单 7 条件字段进行编码。这是我的 c...

回答 1 投票 0

按钮右边缘附近闪烁

当您将光标移近“项目”的右边缘时,它开始闪烁。 :根 { --浅灰色:#979797; --深灰色:#3D3D3D; --橙色:#ff8400; --灰色:#...

回答 1 投票 0

ASP.Net 下拉列表未返回 selectedindexchanged 事件的索引

我有一个下拉列表控件,其中包含正确触发的 selectedindexchanged 事件。 但是,当您从列表中选择一个项目时,返回到 selectedindex 的索引值会发生变化...

回答 1 投票 0

如果再次单击,select2 日期自定义选项将不会打开

$(文档).ready(function() { ///日期选择器 $("#date-range-options").select2({ 占位符:“选择”, 搜索的最小结果:-1, 关闭选择:假, 允许清除:假 ...

回答 1 投票 0

Flutter 中的 DropDownMenu 可以检测到点击箭头图标吗?

我正在使用DropDowmMenu中的搜索模式。 所以我们可以通过写入一些值来过滤 itens。 当我们单击箭头打开列表项时,我需要自动清理我们编写的内容。 有可能吗...

回答 1 投票 0

Android Compose DropdownMenu 与 android:checkableBehavior="single" 类似于 xml 菜单

我正在将我的 android xml 布局迁移到 compose,并在尝试在 compose 中实现下拉菜单(支持以下 xml 版本的下拉菜单)时遇到问题 我正在将我的 android xml 布局迁移到 compose,并在尝试在 compose 中实现支持以下 xml 版本的下拉菜单的下拉菜单时遇到问题 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="@string/my_title" android:enabled="false" /> <group android:id="@+id/my_group" android:checkableBehavior="single"> <item android:id="@+id/my_allocate" android:icon="@drawable/my_allocate" android:title="@string/context_menu_allocate" /> <item android:id="@+id/my_delete" android:icon="@drawable/my_delete" android:title="@string/context_menu_delete" /> <item android:id="@+id/my_context" android:icon="@drawable/my_context" android:title="@string/context_menu" /> </group> </menu> 这在撰写中可能吗? 为什么不androidx.compose.material3.DropdownMenu& androidx.compose.material3.DropdownMenuItem支持爸爸团体 你可以这样做: data class MenuItem( val name: String, val icon: ImageVector, val selectedIcon: ImageVector, val selected: Boolean = false ) @Composable fun Menu() { val menuItems = remember { mutableStateListOf( listOf( MenuItem( name = "Home", icon = Icons.Outlined.Home, selectedIcon = Icons.Filled.Home, selected = false ), MenuItem( name = "Favorites", icon = Icons.Outlined.FavoriteBorder, selectedIcon = Icons.Filled.Favorite, selected = false ) ), listOf( MenuItem( name = "Home", icon = Icons.Outlined.Home, selectedIcon = Icons.Filled.Home, selected = false ), MenuItem( name = "Favorites", icon = Icons.Outlined.FavoriteBorder, selectedIcon = Icons.Filled.Favorite, selected = false ) ) ) } val onClick = { groupId: Int, selectedItemIndex: Int -> val newGroup: MutableList<MenuItem> = mutableListOf() menuItems[groupId].forEachIndexed { index, item -> newGroup.add(item.copy(selected = index == selectedItemIndex)) } menuItems[groupId] = newGroup } DropdownMenu(expanded = true, onDismissRequest = { }) { menuItems.forEachIndexed { groupIndex, group -> group.forEachIndexed { index, item -> DropdownMenuItem( text = { Text(text = item.name) }, onClick = { onClick(groupIndex, index) }, leadingIcon = { Icon( imageVector = if (item.selected) item.selectedIcon else item.icon, contentDescription = item.name ) }, trailingIcon = { RadioButton( selected = item.selected, onClick = { onClick(groupIndex, index) } ) } ) } if (groupIndex < menuItems.size - 1) { HorizontalDivider() } } } } 这是结果: 此代码创建具有预期行为的菜单视图。当然,您仍然需要做一些工作才能将其用作下拉菜单或侧边菜单。

回答 1 投票 0

CakePHP:自动搜索预先选择的下拉值

我有一个搜索表单,其中有一个文本输入框、三个复选框和一个基于数据库中的用户数据的下拉列表中预选的默认值。 例如如果用户住在公社 1,则 1 是

回答 1 投票 0

抽屉中的下拉按钮颤动

我尝试在抽屉标题中添加下拉按钮,但我遇到问题 下拉按钮 这是我的代码 导入'包:flutter/material.dart'; 导入'包:测试/屏幕/change_password_screen.dart'; 我...

回答 1 投票 0

如何使用Cypress从下拉列表中选择随机项目?

在网站中:https://www.testandquiz.com/selenium/testing.html 这里有一个下拉菜单 在此输入图像描述 html 如下所示: ... 在网站中:https://www.testandquiz.com/selenium/testing.html这里有一个下拉菜单 在此输入图片描述 html如下: <select id="testingDropdown"> <option id="automation" value="Automation">Automation Testing</option> <option id="performance" value="Performance">Performance Testing</option> <option id="manual" value="Manual">Manual Testing</option> <option id="database" value="Database">Database Testing</option> </select> 我愿意: 单击提到的下拉菜单 数一下物品数量 从列表中选择随机项目 如何使用 cypress 来处理这个问题? 我尝试了以下方法,但测试失败了 describe('Cypress.io tests', function() { it('Open cypress.io page', function() { var cypressPage = 'https://www.testandquiz.com/selenium/testing.html' cy.visit(cypressPage) cy.xpath("//[@id='testingDropdown']").click(); }) }) 例如,我们有一个包含三个选项的选择。 HTML代码: <select id="selectId"> <option>A</option> <option>B</option> <option>C</option> </select> javascript代码: //Random int number generator between min and max function getRandomInt(min, max){      return Math.floor(Math.random() * (max - min + 1)) + min;    } cy.get(`#selectId> option`) // we get the select/option by finding the select by id .then(listing => {        const randomNumber = getRandomInt(0, listing.length-1); //generate a rendom number between 0 and length-1. In this case 0,1,2 cy.get(`#selectId> option`).eq(randomNumber).then(($select) => {        //choose an option randomly const text = $select.text()       //get the option's text. For ex. "A" cy.get(`#selectId`).select(text)      // select the option on UI });    }) 为什么不使用 .get() 来访问你的元素? 使用 .children() 您可以获取下拉列表中的元素数量。 cy.get('#testingDropdown').children() 或者你想要它作为一个变量? HTML 代码如下所示: 在此输入图片描述 cy.get("[role='listbox'] mat-option").find('span').then(options => { // Log all the dropdown options cy.log("dropdown options: "+ options.text()); // Initialize an empty array to hold the option texts var optionArray = []; // Iterate over each option and push its text to the array options.each((index, option) => { optionArray.push(Cypress.$(option).text().trim()); }); // Log the options array to verify cy.log("Options array: " + JSON.stringify(optionArray)); // Select a random value from the array const randomOption = optionArray[Math.floor(Math.random() * optionArray.length)]; // Log the selected random option cy.log("random option: " + randomOption); // Select the random option in the dropdown (Assuming you want to select based on text) cy.get("[role='listbox']").contains('span', randomOption).click(); }); 聚会有点晚了。 Cypress 不允许您使用 click() 来选择元素。您将需要为此使用选择功能。 您还需要两个 xpath: 对于下拉元素 对于随机选择的下拉选项。 这是工作代码 describe('Cypress.io tests', function() { it('Open cypress.io page', function() { var cypressPage = 'https://www.testandquiz.com/selenium/testing.html'; cy.visit(cypressPage); // Get the array of options cy.xpath('//*[@id="testingDropdown"]//option').then(($elements) => { const randomOption = Math.floor(Math.random() * $elements.length); // select option from drop down cy.xpath('//*[@id="testingDropdown"]').select(`${$elements[randomOption].innerText}`); cy.log(`random option selected is ${$elements[randomOption].innerText}}`); }) })

回答 0 投票 0

如何以编程方式关闭 Flutter 中打开的 DropdownMenu

我一直在尝试寻找解决这个问题的方法,但没有成功。 flutter(当前运行版本 3.22.2)有没有办法以编程方式关闭打开的 DropdownMenu ,即。关闭下降...

回答 1 投票 0

下拉菜单会扭曲其他按钮

将鼠标悬停在“项目”按钮上后,我希望它向下滚动下拉菜单,而不扭曲其他按钮的大小,并同时向下推页脚。有什么帮助吗...

回答 1 投票 0

dropdown_search 颤振搜索功能不起作用

下拉搜索( asyncItems:(字符串过滤器)=> getData(过滤器), itemAsString: (ProductModel u) => u.name, onChanged:(产品模型?数据){ instcatname = 数据?.n...

回答 1 投票 0

尝试创建自适应数据验证列表

我正在尝试为库存创建一个依赖的下拉列表,该列表将在可预见的将来随着类别和列表的变化而自适应。 VBA被阻止了,所以我的解决方案必须完成

回答 1 投票 0

如何绑定到没有值的下拉列表

我编写了一些代码来批量更新网格视图。在网格视图中,我的模板字段之一有一个下拉列表: 我编写了一些代码来批量更新网格视图。在网格视图中,我的模板字段之一有一个下拉列表: <asp:DropDownList ID="DDLCategories" runat="server" DataSourceID="odsCategories" DataTextField="txtCategory" DataValueField="intCategoryID" SelectedValue='<%# Bind("intCategoryID") %>'> <asp:ListItem Text="Please Select an item" Value ="-1"></asp:ListItem> </asp:DropDownList> 我的数据库中有 800 条记录。然而,其中只有少数被分配了“intCategoryID”值。其余的都是NULL。 批量更新的全部原因是更新所有“intCategoryID”字段并为每条记录分配一个类别ID。 因为并非所有“intCategoryID”都已分配值,所以当我尝试渲染页面时出现错误。下拉列表失败。这是消息: 'DDLCategories' has a SelectedValue which is invalid because it does not exist in the list of items. Parameter name: value 有没有办法将空类别分配给我在下拉列表中创建的值为“-1”的列表项? IE 如果“intCategoryID”为 NULL,则选择“请选择一个项目”,否则选择所选值。 我尝试转换你向我指出的代码,但是我对 C# 和 ASP.NET 仍然是新手,因此我有一些错误。 您指出的代码是指 formview,但是我正在尝试将其更改为 gridview。 这是迄今为止我的代码: protected void GridView1_PreRender(object sender, EventArgs e) { DataRowView rowView = (DataRowView)(GridView1.DataItem); if ((rowView != null) && ((DropDownList)(GridView1.FindControl("DDLCategories")).Items.FindByValue(rowView["intCategoryID"].ToString()) != null)); { (DropDownList)(GridView1.FindControl("DDLCategories")).SelectedValue = rowView["Category"].ToString(); } } protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e) { e.NewValues["intCategoryID"] = (DropDownList)(GridView1.FindControl("DDLCategories")).SelectedValue; } 请您指出我何时创建错误。 最简单的方法是允许 AppendDataBoundItems 并添加一个对应于 null 的 intem。它的值可能为“-1”或不在列表值中的任何其他值。现在您所要做的就是进行条件绑定: (Eval("intCategoryID") != null && Eval("intCategoryID").ToString().Length>0) ? Eval("intCategoryID").ToString() : "-1" 要解决此问题,您可以创建自定义 DropdownList 服务器控件。 using System.Web.UI.WebControls; namespace CustomNamespace { // Dropdownlist which does not throw an exception if SelectedValue does not exist public class CustomDropdownList : DropDownList { protected override void PerformDataBinding(System.Collections.IEnumerable dataSource) { try { base.PerformDataBinding(dataSource); } catch (System.ArgumentOutOfRangeException) { } } } } 然后使用 aspx 页面上的自定义下拉列表。如果您的项目名为“CustomProject”,请将其添加到 aspx 文件的第二行: <%@ Register assembly="CustomProject" namespace="CustomNamespace" tagprefix="custom" %> 然后将所有 DropdownList 标记实例替换为自定义标记实例: <custom:CustomDropdownList ID="ddlId" runat="server" SelectedValue='<%# Bind("column") %>' DataSourceID="dataSourceDropdown" DataTextField="field" DataValueField="value" /> 我遇到了同样的问题并进行了一些研究。 MS建议创建一个带有空字符串的列表项作为第二个默认值,这对我有用。 <asp:DropDownList ID="DDLCategories" runat="server" DataSourceID="odsCategories" DataTextField="txtCategory" DataValueField="intCategoryID" SelectedValue='<%# Bind("intCategoryID") %>'> <asp:ListItem Value="" Selected="True" >None</asp:ListItem> <asp:ListItem Text="Please Select an item" Value ="-1"></asp:ListItem> </asp:DropDownList> 查看这篇文章。 它重写 DDL 的绑定方法并检查缺少的 SelectedValue。 如果您不使用 FormView,您可能需要修改它,但我认为您将从这篇文章中获得一个良好的开端。

回答 5 投票 0

Slim-Select 插件在 Bootstrap 5.3 深色模式下无法正常工作

Slim-Select 插件不能很好地与 Bootstrap 5.3 深色模式配合使用,即使应用程序使用深色模式,该插件也会默认为浅色模式。这也会影响输入元素搜索框或搜索...

回答 1 投票 0


在 selenium webdriver 中使用 md-select 和 md-option 进行下拉选择

如何在 selenium webdriver 中使用 md-select 和 md-option 选择下拉列表。 选择不支持的类别。 如何在 selenium webdriver 中使用 md-select 和 md-option 选择下拉列表。 不支持选择班级。 <md-select placeholder="Filter" class="filter-select md-no-underline ng-pristine ng-valid ng-empty ng-touched" ng-model="$ctrl.dummy" aria-label="Filters" tabindex="0" aria-disabled="false" role="listbox" aria-expanded="false" aria-multiselectable="false" id="select_80" aria-invalid="false" style=""><md-select-value class="md-select-value md-select-placeholder" id="select_value_label_70"><span>Filter</span><span class="md-select-icon" aria-hidden="true"></span></md-select-value><div class="md-select-menu-container" aria-hidden="true" role="presentation" id="select_container_81"><md-select-menu role="presentation" class="_md"><md-content class="_md"> <!-- ngRepeat: filter in $ctrl.allFilters --><md-option md-option-empty="" ng-repeat="filter in $ctrl.allFilters" ng-click="$ctrl.applyFilter(filter)" ng-keyup="$event.keyCode === 32 ? $ctrl.applyFilter(filter) : null" tabindex="0" class="ng-scope md-ink-ripple" role="option" aria-selected="false" id="select_option_93"><div class="md-text ng-binding"> Pending </div></md-option><!-- end ngRepeat: filter in $ctrl.allFilters --><md-option md-option-empty="" ng-repeat="filter in $ctrl.allFilters" ng-click="$ctrl.applyFilter(filter)" ng-keyup="$event.keyCode === 32 ? $ctrl.applyFilter(filter) : null" tabindex="0" class="ng-scope md-ink-ripple" role="option" aria-selected="false" id="select_option_94"><div class="md-text ng-binding"> Posted </div></md-option><!-- end ngRepeat: filter in $ctrl.allFilters --><md-option md-option-empty="" ng-repeat="filter in $ctrl.allFilters" ng-click="$ctrl.applyFilter(filter)" ng-keyup="$event.keyCode === 32 ? $ctrl.applyFilter(filter) : null" tabindex="0" class="ng-scope md-ink-ripple" role="option" aria-selected="false" id="select_option_95"><div class="md-text ng-binding"> Checks &amp; eChecks </div></md-option><!-- end ngRepeat: filter in $ctrl.allFilters --><md-option md-option-empty="" ng-repeat="filter in $ctrl.allFilters" ng-click="$ctrl.applyFilter(filter)" ng-keyup="$event.keyCode === 32 ? $ctrl.applyFilter(filter) : null" tabindex="0" class="ng-scope md-ink-ripple" role="option" aria-selected="false" id="select_option_96"><div class="md-text ng-binding"> Deposit </div></md-option><!-- end ngRepeat: filter in $ctrl.allFilters --><md-option md-option-empty="" ng-repeat="filter in $ctrl.allFilters" ng-click="$ctrl.applyFilter(filter)" ng-keyup="$event.keyCode === 32 ? $ctrl.applyFilter(filter) : null" tabindex="0" class="ng-scope md-ink-ripple" role="option" aria-selected="false" id="select_option_97"><div class="md-text ng-binding"> Withdrawal </div></md-option><!-- end ngRepeat: filter in $ctrl.allFilters --> </md-content></md-select-menu></div></md-select> 假设您想从选项中选择Pending。你可以这样做: WebElement option = driver.findElement(By.id("select_option_93")); option.click(); 以下代码给出了来自selenium驱动程序的perfecto设备连接 import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import com.perfectomobile.selenium.api.IMobileDevice; import com.perfectomobile.selenium.api.IMobileDriver; import com.perfectomobile.selenium.api.IMobileWebDriver; import com.perfectomobile.selenium.params.analyze.text.MobileTextMatchMode; public class BofaApp_app extends PerfectoMobileBasicTest implements Runnable{ /* * * Class Name : PerfectoMobileBasicTest * Author : Uzi Eilon <[email protected]> * Date : Dec 6th 2013 * * Description : * Mobile Native application test * The test open the BOFA app (on a real device) and looks for an ATM. * This test contains IMobileWebDriver (extension to webdriver), which allows the to get native and visual objects on mobile app * */ public BofaApp_app(IMobileDriver driver) { super(driver); } @Override public void execTest() { IMobileDevice device = ((IMobileDriver) _driver).getDevice(_DeviceId); device.open(); device.home(); IMobileWebDriver webDriver = _driver.getDevice(_DeviceId).getVisualDriver(); webDriver.findElement(By.linkText("Bofa")).click(); IMobileWebDriver init = _driver.getDevice(_DeviceId).getVisualDriver(); init.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); init.manageMobile().visualOptions().textMatchOptions().setMode(MobileTextMatchMode.LAST); init.findElement(By.linkText("Account")).click(); webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); webDriver.findElement(By.linkText("Save this online")); webDriver.manageMobile().visualOptions().textMatchOptions().setMode(MobileTextMatchMode.LAST); webDriver.findElement(By.linkText("Locations")).click(); webDriver.findElement(By.linkText("Find Bank of America ATMs")); IMobileWebDriver zip = _driver.getDevice(_DeviceId).getVisualDriver(); zip.manageMobile().visualOptions().textMatchOptions().setMode(MobileTextMatchMode.LAST); zip.findElement(By.linkText("zip code")).click(); sleep(2000); zip.findElement(By.linkText("zip code")).click(); sleep(2000); webDriver.manageMobile().visualOptions().textMatchOptions().setMode(MobileTextMatchMode.LAST); webDriver.manageMobile().visualOptions().ocrOptions().setLevelsLow(120); webDriver.findElement(By.linkText("Code")).sendKeys("02459"); zip.findElement(By.linkText("Done")).click(); zip.findElement(By.linkText("Go")).click(); webDriver.findElement(By.linkText("Newton MA")); } }* public class Constants { /** Project Constants */ public static final String REPORT_LIB = "C:\\Test\\"; public static final String HTML_REPORT_NAME = "Total.html"; public static final String PM_USER = "[email protected]"; public static final String PM_PASSWORD = "*************"; public static final String PM_CLOUD = "prerelease.perfectomobile.com"; } public interface ExecutionReporter { /* * * Class Name : ExecutionReporter * Author : Uzi Eilon <[email protected]> * Date : Dec 6th 2013 * * Description : * Reporter allows you to build an summary report which aggregate all the executions the results and the link for the specific test report * You can find an HTML reporter in this project * */ public void reportHeader (String title); public void addLine(String testName,String deviceID,String repID,boolean status); public void closeRep(); } import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; /* * * Class Name : HTMLReporter * Author : Uzi Eilon <[email protected]> * Date : Dec 6th 2013 * * Description : * implements ExecutionReporter and create an HTML summary report * */ public class HTMLReporter implements ExecutionReporter { BufferedWriter _bw = null; public HTMLReporter (String title ) { reportHeader(title); } public void reportHeader (String title) { String repName = Constants.REPORT_LIB+ Constants.HTML_REPORT_NAME; File f = new File (repName) ; try { _bw = new BufferedWriter(new FileWriter(f)); DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); _bw.write("<p> Date :"+dateFormat.format(cal.getTime())+" </p>"); _bw.write("<p> Test Name: "+title+"</p>"); _bw.write("<p>"); _bw.write("<p>"); _bw.write("<table border=\"1\">"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void addLine(String testName,String deviceID,String repID,boolean status) { try { _bw.write("<tr>"); _bw.write("<td>"+testName+"</td>"); _bw.write("<td>"+deviceID+"</td>"); _bw.write("<td> <a href=\""+repID+"\">Report</a></td>"); _bw.write("<td>"+status+"</td>"); _bw.write("</tr>"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void closeRep() { try { _bw.write("</table></p></body></html>"); _bw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } import java.lang.reflect.Constructor; import com.perfectomobile.selenium.*; import com.perfectomobile.selenium.api.*; public class MobileTest { /* * * Class Name : MobileTest * Author : Uzi Eilon <[email protected]> * Date : Dec 6th 2013 * * Description : * Mobile Executer gets list of test and devices and execute it on the available devices * in this example the list arrive form array [] [] * The tests run on real devices in Perfecto Mobile cloud */ public static void main(String[] args) { System.out.println("Script started"); String host = Constants.PM_CLOUD; String user = Constants.PM_USER; String password = Constants.PM_PASSWORD; String[] [] testcase ={ // {"PerfectoTestCheckFlight","3230D2D238BECF6D"}, // {"PerfectoTestCheckFlight","4A8203C8DBAB382EE6BB8021B825A736CA734484"}, {"BofaApp_app","4A8203C8DBAB382EE6BB8021B825A736CA734484"}, // {"usAirways","3230D2D238BECF6D"} }; ExecutionReporter reporter = new HTMLReporter("Regression Test Tesults"); try { for(int i =0; i < testcase.length; i++) { IMobileDriver driver = new MobileDriver(host, user, password); String className = testcase[i][0]; String device = testcase[i][1]; PerfectoMobileBasicTest test = null; Constructor con = null; try { con = Class.forName(className).getConstructor(IMobileDriver.class); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { test = (PerfectoMobileBasicTest)con.newInstance(driver); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } //PerfectoMobileBasicTest test = new PerfectoTestCheckFlight(driver); test.setDeviceID(device); Thread t = new Thread(test); t.start(); reporter.addLine(className,device,test.getRepName(),test.getStatus()); } } catch (Exception e) { e.printStackTrace(); } finally { reporter.closeRep(); } } } import java.io.File; import java.io.InputStream; import com.perfectomobile.httpclient.MediaType; import com.perfectomobile.httpclient.utils.FileUtils; import com.perfectomobile.selenium.api.IMobileDriver; /* * * Class Name : PerfectoMobileBasicTest * Author : Uzi Eilon <[email protected]> * Date : Dec 6th 2013 * * Description : Basic abstract perfecto mobile test - Each test need to extend this class and implement the actual test in the PerfectoMobileBasicTest * This basic test handles the driver and the device */ public abstract class PerfectoMobileBasicTest implements Runnable{ String _DeviceId = null; IMobileDriver _driver; boolean _status = true; @Override public void run() { try { execTest(); }catch (Exception e) { _status = false; } closeTest(); getRep(MediaType.HTML); } public PerfectoMobileBasicTest (IMobileDriver driver) { _driver = driver; } public Boolean getStatus() { return _status ; } public void setDeviceID(String Device) { _DeviceId= Device; } public String getRepName() { String className = this.getClass().getName(); String name = Constants.REPORT_LIB+className+_DeviceId+".HTML"; return name; } public void getRep(MediaType Type) { InputStream reportStream = ((IMobileDriver) _driver).downloadReport(Type); if (reportStream != null) { File reportFile = new File(getRepName()); FileUtils.write(reportStream, reportFile); } } public void sleep(long millis) { try { Thread.sleep(millis); } catch (InterruptedException e) { } } public void closeTest( ) { _driver.quit(); } public abstract void execTest() throws Exception ; }* import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import com.perfectomobile.selenium.api.IMobileDevice; import com.perfectomobile.selenium.api.IMobileDriver; import com.perfectomobile.selenium.api.IMobileWebDriver; /* * * Class Name : PerfectoTestCheckFlight * Author : Uzi Eilon <[email protected]> * Date : Dec 6th 2013 * * Description : * Mobile web test * the test go to united.com (on a real device) and check the status of flights number 84 * it use a web driver which connected to Perfecto Mobile cloud. * the test is based on a webDriver test */ public class PerfectoTestCheckFlight extends PerfectoMobileBasicTest implements Runnable{ public PerfectoTestCheckFlight(IMobileDriver driver) { super(driver); } @Override public void execTest() { IMobileDevice device = ((IMobileDriver) _driver).getDevice(_DeviceId); device.open(); device.home(); //device.getScreenText() //device.checkpointText("search"); WebDriver webDriver = device.getDOMDriver ("www.united.com"); webDriver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); webDriver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS); //sleep(2000); question? String url = webDriver.getCurrentUrl(); String title = webDriver.getTitle(); System.out.println("url: " + url + ", title: " + title); WebElement webElement = webDriver.findElement(By.xpath("(//#text)[53]")); webElement.click(); webElement = webDriver.findElement(By.xpath("(//@id=\"FlightNumber\")[1]")); webElement.sendKeys("84"); webDriver.findElement(By.xpath("(//INPUT)[5]")).click(); }* <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Supported Documents</title> <style> body { font-family: Arial, sans-serif; } .container { width: 80%; margin: auto; padding-top: 20px; } h1 { color: #333; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } .alphabet-nav { position: fixed; top: 20px; right: 50px; background: #f7f7f7; padding: 10px; border-radius: 5px; } .alphabet-nav a { text-decoration: none; padding: 5px; display: inline-block; color: #007bff; } section { margin-top: 20px; } </style> </head> <body> <div class="container"> <h1>Full List of Supported Documents</h1> <div class="alphabet-nav"> <a href="#C">C</a> <a href="#I">I</a> <a href="#U">U</a> </div> <section> <h2>Canada 🇨🇦</h2> <ul> <li>Driver License</li> <li>Identification Card</li> <li>Passport</li> <li>Residence Permit</li> </ul> </section> <section> <h2>India 🇮🇳</h2> <ul> <li>Passport</li> </ul> </section> <section> <h2>United Kingdom 🇬🇧</h2> <ul> <li>Driver License</li> <li>Passport</li> <li>Residence Permit Card</li> </ul> </section> <section> <h2>United States 🇺🇸</h2> <ul> <li>Driver License</li> <li>Identification Card</li> <li>Passport</li> <li>Passport Card</li> <li>Permanent Resident Card</li> </ul> </section> </div> </body> </html>

回答 3 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.