2016-09-22 8 views
1

問題は簡単です。私はjavascriptコードによって生成されるポップアップの要素をクリックする必要があります。このページはIEでのみ使用可能で、開発者ツールがオンの場合はポップアップの要素を選択できません。基本的に私はxpathを知らないが、私はポップアップを生成するjavascriptを持っている。これは、ページ上のポップアップです:javascriptポップアップでのセレン発見要素

Popup on page

そして、これはポップアップを生成するJavaScriptコードです:

function pickDefaultType() { 
    // create popup 
    thePopup = window.createPopup(); 
    var doc = thePopup.document; 
    var body = doc.body; 

    // add stylesheet 
    var oSheet = doc.createStyleSheet(); 
    oSheet.addRule("TD", "cursor: hand; font-family: Verdana, Arial, sans-serif; font-size: " + $('body').css('font-size') + ";"); 
    oSheet.addRule(".TableStyle", "overflow-y: auto; overflow-x: visible;"); 
    oSheet.addRule(".DivStyle", "height: 100%; overflow-y: auto; overflow-x: visible; border: #C1D3E7 1px solid; color: #404040"); 
    oSheet.addRule(".tableHeading", "background-color: #326894; color: white;"); 

    // create scrolling div 
    var theDiv = thePopup.document.createElement("DIV"); 
    theDiv.className = "DivStyle"; 

    body.appendChild(theDiv); 
    theDiv.innerHTML = "<table cellpadding='2' cellspacing='0' width='100%' height='100%'><tr><td id='0'>" + sam.appStrings.defaultDateTypeNone + "</td><tr><tr><td id='1'>" + sam.appStrings.defaultDateTypeCurrent + "</td><tr><tr><td id='2'>" + sam.appStrings.defaultDateTypeOffset + "</td><tr><tr><td id='3'>" + sam.appStrings.defaultDateTypeFixed + "</td><tr></table>"; 
    var theTable = theDiv.firstChild; 
    theTable.className = "TableStyle"; 
    theTable.style.display = ""; 
    theTable.onclick = selectDefaultType; 
    theTable.onmouseover = mouseOver; 
    theTable.onmouseout = mouseOut; 

    // deterine size to show the popup 
    thePopup.show(10, 10, 10, 10, typeSpan); 
    var tableWidth = theTable.offsetWidth + 18; 
    var tableHeight = theTable.offsetHeight + 2; 

    thePopup.show(0, typeSpan.clientHeight + 2, tableWidth, tableHeight, typeSpan); 
} 

私は私が使用し、XPathとidを持つ要素「None」を見つけるん試してみました同様に待つ

WebDriverWait wait = new WebDriverWait(webDriver, 3); 
WebElement elem = wait.until(ExpectedConditions.elementToBeClickable(By.id("0"))); 

私はまた、セレンからAlertクラスを試してみました:

Alert promptAlert = webDriver.switchTo().alert(); 
    String alertText = promptAlert.getText(); 
    System.out.println("Alert text is " + alertText); 

を要素が見つかりません。アラートは存在しません。

ポップアップがフレーム内にある場合は、その名前をフレームに切り替えるにはどうすればよいですか?

私はSeleniumを使用してドロップダウンを正常に開いたことに注意してください。ちょうどそれをクリックするための要素が見つかりません。

ありがとうございます!

+0

私は、開発者から.htcファイルがそのポップアップのレンダリングに使用されていると言われています。このポップアップの要素にアクセスできますか? –

答えて

0

webDriverを使用してポップアップの要素にアクセスできないことがあります。その場合、JavascriptExecutorを使用してその要素を見つけることができます。要素の「Id」を知っているようですが、以下のコードを試して要素にアクセスしてください。

WebElement ele =(WebElement) ((JavascriptExecutor)driver).executeScript("return document.getElementById("yourElementId")); 
+0

私はこれを試しました:WebElement ele =(WebElement)((JavascriptExecutor)webDriver).executeScript( "return document.getElementById( '1')"); ele.click();クリックでNullPointerExceptionが発生する –

+0

警告を表示してから、試してみてください。 –

+0

iframeの存在を確認する場合は、次のコードを使用できます。リスト iframes = driver.findelements(by.tagname( "iframe" ')); iFrameの存在を確認するiframe.size()のようなリストのsize()を確認してください。 –

関連する問題