2014-05-22 20 views
1

我想用Selenuim中的PhantomJS在Java中選擇一個簡單的複選框。如何使用PhantomJS和Selen在Java中單擊複選框?

我用Firefox做到了與此代碼

driver.findElement(By.xpath("//label[@for='terms-checkbox']")).click(); 

但是,當我改變PhantomJS司機我得到了一個錯誤:無形的元素...

+2

如果這是一個激烈的,JS和AJAX重的頁面,可悲的事實是PhantomJS(和其他無頭瀏覽器)只是不適合這項工作。 – Arran

+0

因此,即使使用最新版本的PhantomJS 1.9.7,也無法做到這一點?因爲,我必須用無頭瀏覽器做所有測試,並且它將在Linux服務器上運行。 – Wal

+0

FwIW,這可能只是PhantomJS與常規瀏覽器無法處理標籤點擊相關的問題。如果我正在使用PhantomJS測試JavaScript,那麼我必須手動創建和分派鼠標事件以獲得點擊工作。不幸的是這對Selenium沒有多大幫助,但它可能是有用的信息! – ATG

回答

0

在我的案件的核心問題是對的XPath如果你想點擊其中有一個孩子的div元素上,我用在phantomjs定位器,您需要點擊該元素的特定子DIV

<div class="ui-helper-hidden-accessible"> 
    <input id="addressUpdate:firmflg_input" name="addressUpdate:firmflg_input" autocomplete="off" aria-labelledby="addressUpdate:j_idt159" aria-checked="false" type="checkbox"> 
</div> 
<div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-icon ui-icon-blank ui-c"></span> 
</div> 

如果我們e這個xpath //div[@id='addressUpdate:firmflg']對於上面的代碼snipet,如果你在phantomjs上運行它將無法點擊複選框,但它可以在其他瀏覽器中運行。 而不是如果你去//div[@id='addressUpdate:firmflg']/div[2]這將適用於所有的瀏覽器,包括phantomjs。

相關問題