我正在尝试为我的WebApp选择菜单选项,可以点击菜单,菜单选项也可见,但无法点击菜单选项。
从Selenium API中,如果我试图检查菜单选项的可见性,它会说不可见,但实际上它已经在屏幕上可见了。
是否有使用Selenium IE驱动程序选择菜单和菜单选项的标准。
以下是菜单/菜单选项代码:
<DIV style="BORDER-BOTTOM: 2px outset; POSITION: absolute; BORDER-LEFT: 2px outset; WIDTH: 162px; FONT-FAMILY: Tahoma; BACKGROUND: #e4e4e4; HEIGHT: 106px; FONT-SIZE: 8pt; BORDER-TOP: 2px outset; TOP: 0px; BORDER-RIGHT: 2px outset; LEFT: 0px">
<DIV style="PADDING-BOTTOM: 2px; PADDING-LEFT: 15px; PADDING-RIGHT: 2px; HEIGHT: 17px; COLOR: black; CURSOR: hand; PADDING-TOP: 2px" onmouseover="this.style.background='darkblue';this.style.color='white';" onmouseout="this.style.background=this.runtimeStyle.background;this.style.color='black';" onclick="parent.smConfig_Click(0,'smConfig0')"><SPAN>Config. Management</SPAN> </DIV><INPUT id=lgx_smConfig01 type=hidden SP="" LP="<LinkParams lgx_ID='WideDetail' FromDate='@Data.DefaultDate.FromDate~' ToDate='@Data.DefaultDate.ToDate~' lgx_DetailID='dtlConfig' FirstTime='1' ConfigType='2' />" Modal="" Features="" Target="_top" Action="lgx_Frame.aspx">
<DIV style="PADDING-BOTTOM: 2px; PADDING-LEFT: 15px; PADDING-RIGHT: 2px; HEIGHT: 17px; COLOR: black; CURSOR: hand; PADDING-TOP: 2px" onmouseover="this.style.background='darkblue';this.style.color='white';" onmouseout="this.style.background=this.runtimeStyle.background;this.style.color='black';" onclick="parent.smConfig_Click(1,'smConfig1')"><SPAN>Custom Configuration</SPAN> </DIV><INPUT id=lgx_smConfig11 type=hidden SP="" LP="<LinkParams lgx_ID='Default' lgx_ListID='lstCustomConfig' ConfigType='1' />" Modal="" Features="" Target="_top" Action="lgx_Frame.aspx">
<DIV style="PADDING-BOTTOM: 2px; PADDING-LEFT: 15px; PADDING-RIGHT: 2px; HEIGHT: 17px; COLOR: black; CURSOR: hand; PADDING-TOP: 2px" onmouseover="this.style.background='darkblue';this.style.color='white';" onmouseout="this.style.background=this.runtimeStyle.background;this.style.color='black';" onclick="parent.smConfig_Click(2,'smConfig2')"><SPAN>Custom Transition</SPAN> </DIV><INPUT id=lgx_smConfig21 type=hidden SP="" LP="<LinkParams lgx_ID='Default' lgx_ListID='lstCustomTransition' Flag='512' Title='Custom' />" Modal="" Features="" Target="_top" Action="lgx_Frame.aspx">
<DIV style="PADDING-BOTTOM: 2px; PADDING-LEFT: 15px; PADDING-RIGHT: 2px; HEIGHT: 17px; COLOR: black; CURSOR: hand; PADDING-TOP: 2px" onmouseover="this.style.background='darkblue';this.style.color='white';" onmouseout="this.style.background=this.runtimeStyle.background;this.style.color='black';" onclick="parent.smConfig_Click(3,'smConfig3')"><SPAN>Person Hierarchy Level</SPAN> </DIV><INPUT id=lgx_smConfig31 type=hidden SP="" LP="<LinkParams lgx_ID='Default' lgx_ListID='lstPersonLevel' />" Modal="" Features="" Target="_top" Action="lgx_Frame.aspx">
<DIV style="PADDING-BOTTOM: 2px; PADDING-LEFT: 15px; PADDING-RIGHT: 2px; HEIGHT: 17px; COLOR: black; CURSOR: hand; PADDING-TOP: 2px" onmouseover="this.style.background='darkblue';this.style.color='white';" onmouseout="this.style.background=this.runtimeStyle.background;this.style.color='black';" onclick="parent.smConfig_Click(4,'smConfig4')"><SPAN>Role</SPAN> </DIV><INPUT id=lgx_smConfig41 type=hidden SP="" LP="<LinkParams lgx_ID='Default' lgx_ListID='lstRoleConfig' />" Modal="" Features="" Target="_top" Action="lgx_Frame.aspx">
<DIV style="PADDING-BOTTOM: 2px; PADDING-LEFT: 15px; PADDING-RIGHT: 2px; HEIGHT: 17px; COLOR: black; CURSOR: hand; PADDING-TOP: 2px" onmouseover="this.style.background='darkblue';this.style.color='white';" onmouseout="this.style.background=this.runtimeStyle.background;this.style.color='black';" onclick="parent.smConfig_Click(5,'smConfig5')"><SPAN>Status</SPAN> </DIV><INPUT id=lgx_smConfig51 type=hidden SP="" LP="<LinkParams lgx_ID='Default' lgx_ListID='lstStatusTy' />" Modal="" Features="" Target="_top" Action="lgx_Frame.aspx"> </DIV></DIV>
在上面的菜单选项代码中,我需要单击角色选项。这个选项在点击配置菜单上是可见的,但是点击任何这样的菜单选项都不会发生,它也不会引发任何异常。
请让我知道你的意见或建议,以解决这个问题。
谢谢
尝试过代码1:
WebElement configMenu = driver.findElement(By.id("mConfigLabel"));
configMenu.click();
WebElement menuOption = driver.findElement(By.xpath("//div[@id='oMenuCntxtsmConfig']/div/div[4]"));
menuOption.click();
尝试代码2:
WebElement configMenu = driver.findElement(By.id("mConfigLabel"));
configMenu.click();
WebElement menuOption = driver.findElement(By.xpath("//div/descendant:span[contains(text(),'Role']"));
menuOption.click();
尝试代码3:
configMenu.click();
Actions builder = new Actions(driver);
WebElement roleMenuOption = driver.findElement(By.xpath("//div[@id='oMenuCntxtsmConfig']/div/div[4]"));
builder.moveToElement(configMenu).click(roleMenuOption).build().perform();
尝试代码4:
WebElement configMenu = driver.findElement(By.id("mConfigLabel"));
configMenu.click();
WebElement roleMenuOption = driver.findElement(By.xpath("//div[@id='oMenuCntxtsmConfig']/div/div[4]"));
((JavascriptExecutor) driver).executeScript("arguments[0].click();", roleMenuOption);
使用selenium玩下拉/菜单很棘手,因为下拉/菜单项是隐藏的,只有用户单击下拉/菜单才能看到。
你的方法有点对也有点错。。
正确的方式,你正在访问下拉/菜单
错误的方式访问下拉列表/菜单中的项目,因为它们不能直接访问隐藏在菜单/下拉列表中。
请参阅下面的代码以正确访问特定菜单项,
WebElement DropdownList = driver.findElement(By.id("mConfigLabel"));
Select clickThis = new Select(DropdownList);
clickThis.selectByValue("Role");
我假设你手下的ID/下拉列表是“mConfigLabel”
在stackover flow上有不同的代码风格用于访问菜单项。。。请看一看。
希望这能有所帮助......一切顺利:)
根据我对你问题的理解,你只需点击部门。
您的html代码表示onclick事件与div关联。这个onclick事件可能会使您的输入(最初显示为隐藏)可见。
现在你也需要点击这个输入。
例如,单击“角色”选项时,需要附加此行
driver.findElementByID("lgx_smConfig41").click();
希望这可能对你有所帮助。
在测试我的Web应用程序时,我无法单击菜单项(创建缺陷…),如图所示 下面的代码点击图像(手部图像),如图所示 然后菜单打开。现在我想单击菜单项。我正在为此使用下面的代码 但我得到了上面提到的例外。 这是我在网页上的内容: 你能建议一下吗?
我有一个菜单,其中有li(列表)元素,当你鼠标悬停一个特定的标签后启用。 此代码正在正确执行鼠标悬停,但无法单击“登录链接”链接。尽管手动检查元素是否可见 DOM结构-
嗨,我正在尝试自动启动下拉菜单。默认情况下,它的可见性是隐藏的。将鼠标悬停在它上面时,它的可见性属性显示为可见。我可以单击下拉菜单,但是在单击下拉菜单后,我的selenium脚本不能从下拉菜单中选择值。 错误:线程"main"org.openqa.selenium.ElementNotVisibleException异常:无法单击元素 HTML代码段
一直试图点击网站上的单选按钮,但无济于事。 一直试图点击单选按钮和标签,但硒一直抛出没有这样的元素错误,我在这个阶段有点沮丧。 在实际网站上可能更容易看到: https://www.theaa.ie/car-insurance/journey/getting-started 它在输入电子邮件后的页面上。试图让一些测试用例运行,但这些单选按钮不想被点击。
我正在使用Selenium webdriver。我无法从右键单击打开的选项中选择(例如第二个)选项。 在我当前的代码中,我可以右键单击webElement,但无法从右键单击后打开的列表中选择选项,因为它会自动消失。 因此,有了这段代码,我可以右键单击,但右键单击菜单会自动消失。我想从右键菜单中选择第二个选项。 请帮助!!!
我有在下拉列表中选择每个选项的测试用例,但无论我目前做什么,我都会遇到这个错误。 结果消息:系统。InvalidOperationException:元素在点(1170.0333251953125405.4250030517578)处不可单击,因为另一个元素遮挡了它 目前正试图用这个代码改变年份 - WebElement是这样定义的 这是selenium尝试选择拾取时下拉列表的样子。我看不到任何东