Selenyum RC: bir element belirli bir özelliği olup olmadığını nasıl kontrol edebilirim?

4 Cevap php

Ben bir onclick nitelik ve yok bazı bazı düğmeler var. Ben Belirtilen öğe onclick niteliği olup olmadığını kontrol etmek istiyorum. Bunu nasıl yapabilirim?

O biri varsa getAttribute() nitelik değerini döndürür. Öyle değil, bu bir RuntimeException atar ve testi (I try / catch bloğu sarın bile) durur.

$onclickValue = $this->getAttribute("$locator@onclick"); //works when the attribute exists

4 Cevap

Ile getEval(), sen javascript hasAttribute() function yürütebilirsiniz. findElement(), sen lokasyon desen her türlü çalışmayı sağlayacaktır kullanma.

$hasAttribute = $this->getEval('this.browserbot.findElement("' . $locator . '").hasAttribute("onclick")');
if ($hasAttribute === 'true') {
    //attribute exists
}

getEval() bir dize değil, bir boolean döndüren unutmayın.

Eleman varsa ilk kontrol edebilir XPath kullanarak //location/of/element[@onclick]

Bu Selenyum RC için geçerli değilse lütfen beni affedin. Selenyum IDE, birini kullanabilirsiniz

assertElementNotPresent

(adını rağmen) belirli bir özelliğin mevcut olup olmadığını belirlemek için komut. Bu tek parametre şeklinde olabilir unsuru lokasyon mi

element-id@attribute.

Eğer elemanları söz özniteliği hangi bilmek Tabii ki bu sadece uygun olacaktır. Eğer değilse o zaman XPath ifadeleri kullanarak eleman setleri arasında yineleme gerekecek sanırım.

Yol phpunit en selenyum sürücü çalışır çünkü bir RuntimeException atılır nedeni de budur.

Bu test yürütme bir stop () gerçekleştirmek hataları gibi bazı durumları görmektedir. Özellikle, bu durumda testi durur kod şudur:

protected function getString($command, array $arguments)
{
    try {
        $result = $this->doCommand($command, $arguments);
    }

    catch (RuntimeException $e) {
        $this->stop();

        throw $e;
    }

    return (strlen($result) > 3) ? substr($result, 3) : '';
}

Zaten https://github.com/sebastianbergmann/phpunit/issues/276 de sürücü hataları işleme bu şekilde ilgili bir sorun açtı

BTW) (her ikisi DoCommand () ve getString olarak) (durdurmak için çağrı kaldırarak / usr / share / php / PHPUnit / Extensions / SeleniumTestCase / Driver.php ait istisna yakalama mümkün kodunuzu yapacak ve tercih olarak ele .