WebDriver 无法获取下拉菜单元素 (Java)

WebDriver can't get dropdown menu element (Java)

我在 Java 上为 Selenium WebDriver 编写了一个脚本,但我在从下拉菜单中编辑 select 时遇到了问题。

这是我的定位器:

new Select(driver.findElement(By.id("FormElement_select_68_input_input"))).selectByVisibleText("Image");

这是一个错误:http://prntscr.com/7jul03

这里是 HTML 代码:http://prntscr.com/7jvou6 需要从这个菜单select "Image",但是有一个错误。

在出现这样的错误之前,我无法上传文件,因为我需要切换到 frame(0)。 但是在这里我不知道为什么我不能从 DropBox select 菜单 "Image"。

看起来您正在查找的元素 ID"FormElement_select_68_input_input" 在您的 html 中不存在,您的代码示例将 "FormElement_select_283_input_container" 显示为 select 框元素。试试这个:

Select droplist = new Select(driver.findElement(By.Id("FormElement_select_283_input_container")));   
droplist.selectByVisibleText("image");

因为它不是Select标签。

尝试以下逻辑

WebElement div = driver.findElement(By.cssSelector("div[id*='FormElement_'] > div > div"));
div.click();
WebElement li = div.findElement(By.xpath(".//ul/li[text()='Image']"));
li.click();

您的 ID 是动态的,因此您不能使用它。 Select 不适用于您的情况,您只需点击两次

WebElement dropdown = driver.findElement(By.xpath("//div[@class='select-pad-wrapper AttributePlugin']/input"));
dropdown.click();
WebElement element = driver.findElement(By.xpath("//div[@class='select-pad-wrapper AttributePlugin']/div/ul/li[text()='Image']"));
element.click();

根据 HTML 代码屏幕,我预计 Select class(selectByVisibleText 等)不起作用。你能做一件事吗,试着直接点击所需的选项。 (可以点击“//div[@class='selectbox-wrapper']/ul/li[@class='selectbox_li'][包含(文本(),'Image')]" , 检查一个是否在 firepath)

让我知道结果。如果它不起作用,如上所述,您需要单击该输入下拉框并需要单击该图像。

谢谢, 穆拉利