java - 元素应该是“选择”但是“输入”我该如何解决这个错误
问题描述
我的代码:
loginPage.waitHomePage(60,"Order Scheduling");
Assert.assertEquals("Order Scheduling",driver.getTitle());
(new WebDriverWait(driver, 40)).until(ExpectedConditions.presenceOfElementLocated(By.id("ctl00_ContentPlaceHolderBody_orderDeliveryControl_lstDelivery_ctrl0_deliveryPanelBar_i0_lstOrderRequestItems_ctrl0_deliveryDetailControl_lstDeliveryLineItem_ctrl0_lineItemControl_lstBuyLineItems_ctrl0_buyLineItemControl_cmbSupplier_Input")));
Assert.assertTrue(driver.findElement(By.id("ctl00_ContentPlaceHolderBody_orderDeliveryControl_lstDelivery_ctrl0_deliveryPanelBar_i0_lstOrderRequestItems_ctrl0_deliveryDetailControl_lstDeliveryLineItem_ctrl0_lineItemControl_lstBuyLineItems_ctrl0_buyLineItemControl_cmbSupplier_Input")).isDisplayed());
Select abcSupplier = new Select(driver.findElement(By.id("ctl00_ContentPlaceHolderBody_orderDeliveryControl_lstDelivery_ctrl0_deliveryPanelBar_i0_lstOrderRequestItems_ctrl0_deliveryDetailControl_lstDeliveryLineItem_ctrl0_lineItemControl_lstBuyLineItems_ctrl0_buyLineItemControl_cmbSupplier_Input")));
/*abcSupplier.selectByIndex(17);*/
abcSupplier.selectByVisibleText("TBD");
}
HTML代码:
<input
name="ctl00$ContentPlaceHolderBody$orderDeliveryControl$lstDelivery$ctrl0$deliveryPanelBar$i0$lstOrderRequestItems$ctrl0$deliveryDetailControl$lstDeliveryLineItem$ctrl0$lineItemControl$lstBuyLineItems$ctrl0$buyLineItemControl$cmbSupplier"
type="text"
class="rcbInput radPreventDecorate Required_Field_Control Required_Field_Control_Off"
id="ctl00_ContentPlaceHolderBody_orderDeliveryControl_lstDelivery_ctrl0_deliveryPanelBar_i0_lstOrderRequestItems_ctrl0_deliveryDetailControl_lstDeliveryLineItem_ctrl0_lineItemControl_lstBuyLineItems_ctrl0_buyLineItemControl_cmbSupplier_Input"
value="Mansfield Oil Company of Gainesville Inc"
autocomplete="off">
我哪里做错了?
解决方案
检查这一行:
Select abcSupplier = new Select(driver.findElement(By.id("ctl00_ContentPlaceHolderBody_orderDeliveryControl_lstDelivery_ctrl0_deliveryPanelBar_i0_lstOrderRequestItems_ctrl0_deliveryDetailControl_lstDeliveryLineItem_ctrl0_lineItemControl_lstBuyLineItems_ctrl0_buyLineItemControl_cmbSupplier_Input")));
您期待类型的元素,Select
但您发送到函数的路径findElement
以Input
. 恕我直言,这清楚地暗示您的 ID 或预期的元素类型有问题。不可能给你更具体的答案,因为只有你知道你正在使用的 HTML 文档的确切结构。但是您必须提供正确的 ID 并根据其实际类型处理元素。
推荐阅读
- spring-boot - Spring Cloud Config Client 不适用于 Spring Boot 2.5.1
- android - 如何使分组条形图水平滚动?
- bash - Bash 一种记录不可变变量的方法
- node.js - 使用 node-ffi-napi 调用函数(总是)会泄漏内存
- solr - SolrCloud 查询未找到数据但查看数据存在
- php - 如果返回非 FALSE,Windows 上的 file_put_contents() 是否不能保证实际写入文件?
- kotlin - 无法等待协程在 kotlin 中使用 join() 完成?
- mysql - 完全导入时无法将大数据从 mysql 导入 solr
- unreal-engine4 - 在游戏模式中更改相机演员的控制
- react-native - 应用程序构建成功但应用程序打开空白