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)
让我知道结果。如果它不起作用,如上所述,您需要单击该输入下拉框并需要单击该图像。
谢谢,
穆拉利
我在 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)
让我知道结果。如果它不起作用,如上所述,您需要单击该输入下拉框并需要单击该图像。
谢谢, 穆拉利