2016-05-18 17 views
0

現在、JavaのSelenium WebDriverでチェックボックスをオン(チェック)できません。私はすべてを試みた。 Xpath、CssSelector、ID、Linktext、部分LinkText ... WebDriverがクリックを発生させますが、チェックボックスはチェックされません。チェックボックスSelenium WebDriver、Javaを選択できません

私はSelenium IDEで記録して再生すると、問題なくチェックボックスをチェックします。しかし、私がjavaで同じコードとロケータを使用すると、チェックボックスはチェックされません。

私はチェックボックスとして処理しようとしましたが、クリックしてみましたが、ラベルをクリックしようとしました。しかし、私はそれを働かせることはできません、そして、それは私を失望させ始めています。ここで

が、私はそれにアクセスしたいページのチェックボックスのためのコードである:ここで

<div class="accept-terms"> 
       <div class="row"> 

        <input id="sso-bonus-card-terms" name="cgvAccepted" class="checkbox-custom" data-msg-ssoBonusCardTerms="Veuillez accepter les conditions générales de SSO et Carrefour Bonus Card" type="checkbox" value="true"/><label for="sso-bonus-card-terms">J'accepte les <a href='#'>conditions g&eacute;n&eacute;rales</a> de SSO et Carrefour Bonus Card<span class='obligated'>*</span></label><input type="hidden" name="_cgvAccepted" value="on"/> 

は今それをアクセスもする私のコードです...(私は出回っ、私のプロジェクトで中心的webdriverをインスタンスを持っていますそのページ上の要素が出回っに定義して位置しています)

@FindBy(css = "#registrationForm > div.registration-form-wrapper > div.registration-box.bonus-points-payment > div > div > div > div.col-xs-10 > div > div.card-bonus-content.card-no > div.accept-terms > div > label:nth-child(2)") 
private WebElement ssoBonusCardTerms; 

public SubscriptionWizardPage acceptGeneralConditions(){ 
    logger.info("Scroll down and accept the general conditions"); 
    townCityInput.sendKeys(Keys.PAGE_DOWN); 
    focus.moveToElement(webDriver.findElement(By.xpath("//*[@id=\"registrationForm\"]/div[4]/div[6]/div/div"))).perform(); 
    focus.moveToElement(webDriver.findElement(By.id("sso-bonus-card-terms"))).perform(); 
    try { 
     Thread.sleep(5000); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    focus.moveToElement(ssoBonusCardTerms).click().perform(); 
    return new SubscriptionWizardPage(); 
} 
+0

を私は名前でそれを選択した場合:私は、このメッセージが表示されます...「要素が現在表示されていないので、と相互作用することはできません」それは目に見える... – dbodart

答えて

0
Am guessing there maybe sync issue on load, object is not visible when action perform, lets put some explicit wait 

public SubscriptionWizardPage acceptGeneralConditions() 
{ 
WebElement checkbox= driver.findelement(by.xpath("//input[@id="sso-bonus-card-terms"][@name="cgvAccepted"]") 
Webdriverwait wait = new Webdriverwait(driver,10) 
wait.until(ExpectedConditions.elementToBeClickable(locator); 
checkbox.click(); 
} 

返事を私に結果

+0

こんにちはManjunatha、 ですが、これは返信します....: – dbodart

+0

要素がクリック可能になるのを待ってから10秒後にタイムアウトしました: – dbodart

+0

属性は隠されていると言いますが、私はそれを動作させることはできません。今すぐ...--( – dbodart

0

解決策が見つかりました:

JavascriptExecutor js =(JavascriptExecutor)webDriver; js.executeScript( "document.querySelector(\" [for = 'sso-bonus-card-terms'] \ ")。

+0

このソリューションは、@ Ranjithの答えの1つで書かれたものとほとんど同じです。彼の答えを正しいものとして受け入れるべきです。 – Tom

1

セレン版が更新されない場合は、アップデートしてみてください。この方法を試してください。

WebElement elementChkBox= driver.findelement(By.cssSelector("input[type='checkbox']") 
Webdriverwait wait = new Webdriverwait(driver,10) 
wait.until(ExpectedConditions.elementToBeClickable(locator); 
if(!elementChkBox.isSelected()) { 
checkbox.click(); 
OR 
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript("arguments[0].click();", elementChkBox); 
} 
+0

私はこの同じ問題を抱えていて、JSコードだけが働いていました私の状況では、それだけで起こるwheリモートのSelenium Gridに対してテストを実行します。非常に奇妙ですが、あなたの回避策は問題ありません!ありがとう! – Tom

関連する問題