0

WebApp のメニュー オプションを選択しようとしています。メニューをクリックできます。メニュー オプションも表示されますが、メニュー オプションをクリックできません。

メニューオプションの可視性を確認しようとすると、Selenium APIから、表示されていないと表示されますが、実際には画面に既に表示されています。

Selenium IE Driverを使用してメニューとメニューオプションを選択する基準はありますか?

以下はメニュー/メニューオプションのコードです:

<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>

上記のメニュー オプション コードでは、Roleオプションをクリックする必要があります。このオプションは、構成メニューをクリックすると表示されますが、そのようなメニューオプションをクリックしても発生しません。また、例外もスローされません。

この問題を解決するためのコメントや提案をお知らせください。

ありがとう。

コード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);
4

2 に答える 2

0

あなたの質問の私の理解によると、あなたはただ部門をクリックしているだけです。

あなたのhtmlコードはonclickイベントがdivに関連付けられていることを示しています。 このonClickイベントにより、入力(最初は非表示として指定されている)が表示される可能性があります。

次に、この入力もクリックする必要があります。

たとえば、[役割]オプションをクリックするには、この行を追加する必要があります

driver.findElementByID("lgx_smConfig41").click();

これがお役に立てば幸いです。

于 2012-11-19T17:09:26.777 に答える
0

ドロップダウン/メニュー項目が非表示になっていて、ユーザーがドロップダウン/メニューをクリックするまで表示されないため、セレンを使用してドロップダウン/メニューを操作するのは難しいです。

あなたのアプローチは少し正しく、少し間違っています..

ドロップダウン/メニューにアクセスしている方法

メニュー/ドロップダウンリストに隠されているため、ドロップダウン/メニュー内のアイテムに直接アクセスできないため、間違った方法でドロップダウン/メニューにアクセスしています。

特定のメニュー項目に正しくアクセスするには、以下のコードを参照してください。

WebElement DropdownList = driver.findElement(By.id("mConfigLabel"));
Select clickThis = new Select(DropdownList);
clickThis.selectByValue("Role");

あなたの男性/ドロップダウンのIDは「mConfigLabel」であると想定しています

メニュー項目にアクセスするためのスタックオーバー フローには、さまざまなコード フレーバーがあります。ぜひご覧ください。

これが役立つことを願っています....すべてのベスト:)

于 2012-11-20T09:51:53.033 に答える