2014-11-15 59 views
6

Bir öğenin var olup olmadığını ve görüntülenip görüntülenmeyeceğini doğrulayabiliyorum, ancak 'tıklanabilir' olup olmadığını göremiyorum. engelliler hakkında).Öğenin selenyumda tıklanabilir olup olmadığını kontrol edin

Sorun, genellikle bir web formunu doldururken, istediğim öğenin yüklenirken bir div ile üst üste konulabilmesidir. Div, kimliğinin, isminin ve hatta css'nin esnek olduğunu algılamak için oldukça zor. Bu yüzden bir giriş alanının 'tıklatılmış' veya 'doldurulmuş' olup olmadığını tespit etmeye çalışıyorum. Yer paylaşımlı div mevcut olduğunda, alan normal bir kullanıcı tarafından doldurulamaz (div, giriş alanını kaplayacak ve kullanıcının onu doldurmasına izin vermeyeceği için), ancak selenyum ile doldurulabilir. Bunu önlemek ve sadece kullanıcı doldurabildiğinde sadece selenyumun doldurmasına izin vermek istiyorum. Eğer EAFP principle takip edip bir istisna click() tarafından büyütülen yakalayabilirsiniz,

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

driver = webdriver.Firefox() 
driver.get("http://somedomain") 

element = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "myDynamicElement")) 
) 

Veya:

from selenium.common.exceptions import WebDriverException 

try: 
    element.click() 
except WebDriverException: 
    print "Element is not clickable" 

cevap

8

Sen wait for the element to be clickable can giriş alanındaki herhangi bir işlem ...

Bu size sorunu çözmek umuyoruz

... Else

, ayrıca 2 koşullar yukarıda kontrol etmek için bir döngü koyabilirsiniz ve bu doğruysa sizi giriş metni belirtebilir ve yine aynı eleman bulabilir ve webelement metnini alabilir ve bu metni girdiğiniz metinle karşılaştırabilirsiniz. Eğer bu eşleşmeler varsa, döngüden çıkabilirsiniz.

public void clickElement(WebElement el) throws InterruptedException { 
    ((JavascriptExecutor) driver).executeScript("arguments[0].click();", el); 
} 
+1

O görünüyor yukarıdaki yöntemlerden hiçbiri işe yaramazsa: –

+1

lütfen aşağıdaki bilgileri paylaşabilirsiniz: 1) .lgı html kaynak kodu 2) .Selenium Binding sürüm 3) .Browser adı ve sürüm –

+0

@AayushAgrawal iyi, o zaman denemeye kadar sorun hakkında daha fazla söylemek kolay değil kendimiz. Lütfen, test etmekte olduğunuz hedef siteyi (mümkünse) dahil ettiğiniz kodu sağlayın. – alecxe

1

Sen gerçekleştirmeden önce webElement.isEnabled() ve webElement.isDisplayed() yöntem kullanabilirsiniz

0

i alwas kullandığınız bir (selenyum için) ulaşılamaz eleman tıklayın. Beyaz kaplama hala mevcut, element_to_be_clickable beklemeye yine de izin verecek. Kullanılabilir olmayan öğeyi tıklamaya çalıştığımda hiçbir istisna atılmaz.
İlgili konular