2013-06-18 10 views
5

Ben selenyum testleri yazmaya çalıştığım bir web uygulamasına sahibim ve bir sorunla karşılaştım Chrome sürücüsü ile kullanıcıların bir formu doldurmak için kullanabileceği bir sihirbaz tipi arabirim vardır.Birkaç ayarı ile bir satır eklemek için bir düğme vardır.Bunu siyah renkte özetledim.Yeşil dikdörtgen size tıklanabilir gösterir düğme için alan. Bu dikdörtgenin orta başka bir şey üst üste değildir.ChromeDriver - Korkunç "Element noktası tıklanabilir değil (x, y). Diğer eleman tıklamayı alacaktı

enter image description here

sorun tüm ekranı içerir ve Chrome bu div tıklayın alacak söylüyor dev div olmasıdır. Yani, bu konuda nasıl geçebilirim? Etkili bir div etiketi olduğundan, bu düğmeyi tıklayamayacağım doğru davranış gibi görünmüyor. Bu doğru davranış olsaydı neredeyse hiçbir şey tıklanabilir olurdu.

<button id="add-thisSetting" class="btn">Add This Setting</button> 

çevreleyen div geçerli::

<div id="editBase"> 
    <div class="edit-buttons application_edit_controls"> 
    <div id="thingamajigSettings" class="application_thingamajig_settings"> 
     <div id="thisSetting" class="application_thissetting application-tour-spotlit"> 
     <div class="control-title">This Setting 
     </div> 
     <div class="thisSetting-block"> 
      <div> 
      <div class="scrolling-table" style="overflow-y: auto; overflow-x: hidden;"> 
       <div class="add-thisSetting-bar"> 
       <div class="btn-group pull-right"> 
        <button id="add-thisSetting" class="btn">Add This Setting</button> 
        <button class="btn dropdown-toggle" data-toggle="dropdown"> 
        <ul class="dropdown-menu"> 
       </div> 
       </div> 
      </div> 
      </div> 
      <div id="rulescontainer" class="application_rule_view"> 
      <div id="settings"> 
       <div class="edit-buttons application_edit_controls"> 
       </div> 
      </div> 
      </div> 
      <div id="app_notify_manager" class="application_notify_manager"> 
      </div> 
     </div> 
     </div> 
    </div> 
    </div> 
</div> 
<div class="identityOfMe-widget-ft"></div> 
<div id="jstree-marker" style="display: none;"></div> 
<div class="application_tour"> 
    <div class="application-tour-overlay"></div> 
+1

Bu çevreleyen 'HTML' HTML'si neye benziyor? İlk etapta orada olmanın sebebi nedir? Kötü geliştirme uygulamaları ile savaşıyor gibisin. – Arran

+0

Bir geçici çözüm olarak, bu div için style = "display: none" özniteliğini geçirebilirsiniz. İşte bunu yapmak için yolu http://stackoverflow.com/a/8476765/1343698 –

+0

İşte sayfa kaynağı nasıl görünüyor: – Selena

cevap

0
:

İşte
<div class="application-tour-overlay"></div> 

kısaltılmış html kaynağıdır

enter image description here

Ben tıklayın istediğiniz düğme şudur

click yerine fire_event("click")'u kullanmayı deneyin ... bana yardımcı oldu.

0

Çok fazla bilgi içeren benzer bir soru var [burada] (Debugging "Element is not clickable at point" error). Benzer bir sorunla karşılaştım, zaten DOM'da bulunan ancak gizli olan bir düğmeyi tıklayamadım. Düğüğünüzün konumunun JS'den değişip değişmediğini görmek için bu işlevi birkaç kez çağırmayı deneyin.

public void PrintLocation() 
{ 
Point point = driver.findElement(By.id("add-thisSetting")).getLocation(); 
System.out.println("X="+point.x+"Y="+point.y"); 
} 

Bu durumda, düğme hareket etmeyi durdurulana kadar uyku durumuna getirebilirsiniz.

bu (kötü web sitesi tasarımı) gibi durumlarda benim son tatil
Thread.sleep(500); 
0

Bir DOM JavaScript modifikasyonu başvurmak geçerli: Daha kapsamlı sorun giderme için

driver.execute_script(<<-javascript) 
    var overlay = document.getElementById("modal_overlay"); 
    overlay.parentNode.removeChild(overlay); 
javascript 

, sen bir göz alabilir benim Genel durum için benzer bir soruna cevap ver: https://stackoverflow.com/a/23705280/234593

1

Bazen geliştiriciler eylemleri izlemek için tam ekran "div" kullanır, ancak Chrome web tarayıcısı "div" gösterildiğinde ve üstte herhangi bir şeyi tıklatamaz. Bu yüzden saklamak için "z-index" özelliğini kullanabilirsiniz. C# örnek vardır

: ((IJavaScriptExecutor) this.Driver) .ExecuteScript ("argümanlar [0] .setAttribute ('stil', 'Z endeksi: -1')", pop-up);

İlgili konular