2017-09-16 2 views
0

Hallo Leute okay, also bin ich ein Verwandter (lies: komplett) Neuling zu Selenium/Java/HTML so Entschuldigungen, wenn ich das Offensichtliche bitte. Was ich brauche, ist in der Lage sein, zuSelen kann nicht auf spezifische Checkbox klicken

  1. Klicken Sie auf Specific Kästchen zum Ankreuzen 1 und
  2. Wenn Spezifische Checkbox 2 aktiviert sind, um ihn zu deaktivieren

Hier ist die HTML-Webseite:

Spezifische Checkbox 1

<div class="checkbox"> 
    <label id="agree_to_terms_label" for="agree_to_terms_join" class="visible"> 
     <input id="agree_to_terms_join" name="agree_to_terms" type="checkbox" data-required="true" data-required-message="You need to agree to the *** Account Holder agreement" data-change="" class="parsley-validated"> 
     <span class="left-block"></span> 
     I have read, understand and agree to the <a href="/terms-and-conditions/" target="_blank">*** Account Holder Agreement</a> 
     and acknowledge <a href="/privacy-policy" target="_blank">*** Privacy Policy</a> 
     <input type="hidden" name="agree_to_terms" value="yes"> 
    </label> 
    </div> 

Spezifische Checkbox 2:

<div class="checkbox"> 
    <label id="agree_to_offers_label" for="agree_to_offers" class="visible"> 
     <span class="left-block"> 
     <input id="agree_to_offers" name="agree_to_offers" type="checkbox" data-required-message="" data-change="" checked="checked" value="yes"> 
     <span>By joining *** you'll be notified of exclusive offers and account updates via email</span> 
     </span> 
    </label> 
    </div> 

Meine vergeblichen Versuchen:

Xpath:

driver.findElement(By.xpath("//input[@id='agree_to_terms_join' and @type='checkbox']")).click(); 

Element nicht sichtbar

driver.findElement(By.xpath("//*[@id='agree_to_terms_join']/parent::label")).click(); 

Klicks auf den href Hyperlinks innerhalb des div statt

driver.findElement(By.xpath("//*[@id='agree_to_terms_label']/input")).click(); 

Element nicht sichtbar

CSS:

driver.findElement(By.cssSelector("input[id = 'agree_to_terms_join'][type = 'checkbox']")).click(); 

Element nicht sichtbar

by.className:

driver.findElement(By.className("checkbox")).click(); 

Öffnet Hyperlinks

hatte ich einen Blick in den Foren und sah Erwähnung von Elemente werden versteckt - aber ich kann keine iframes oder irgendetwas anderes erkennen, das den bugger zu verstecken scheint?

Jede Hilfe würde sehr geschätzt werden !!

+0

Bitte prüfen, ob Rahmen – iamsankalp89

+0

Hallo ich für einen Rahmen überprüft, aber es sieht nicht wie es ist. Es scheint, dass es aus einem anderen Grund nicht sichtbar ist (was ich noch nicht weiß) – KZNKatana

+0

Kannst du URL teilen – iamsankalp89

Antwort

0

Versuch folgende:

WebElement yourChkBox = driver.findElement(By.xpath("//*[@id='agree_to_terms_join']/parent::label")); 

WebDriverWait wait = new WebDriverWait(driver, 20); 
wait.until(ExpectedConditions.visibilityOf(yourChkBox)); 

Actions act = new Actions(driver); 
act.moveToElement(yourChkBox).click().build().perform(); 

UPDATE:

oder versuchen Sie, wie unten mit javascriptexecutor:

WebElement yourChkBox = driver.findElement(By.xpath("//*[@id='agree_to_terms_join']/parent::label")); 

JavascriptExecutor js = (JavascriptExecutor) driver;   
js.executeScript("arguments[0].setAttribute('value', 'Yes');", yourChkBox ); 
+0

Vielen Dank versucht dies: @And ("^ Prüft relevante Boxen $") \t öffentlichen void checksBoxes() { \t \t \t \t //driver.findElement(By.xpath (".// Label [@ id = 'agree_to_terms_label']"))() klicken. \t \t \t \t WebElement yourChkBox = driver.findElement (By.xpath ("// * [@ id = 'agree_to_terms_join']/parent :: Label")); \t \t WebDriverWait warten = neu WebDriverWait (Treiber, 60); wait.until (ExpectedConditions.visibilityOf (yourChkBox)); \t \t Aktionen act = neue Aktionen (driver); act.moveToElement (IhreChkBox) .click(). build(). perform(); \t \t \t} – KZNKatana

+0

Aber ich kann immer noch nicht auf das Kontrollkästchen klicken - der Hyperlink öffnet stattdessen geöffnet. Nicht sicher, was ich falsch mache! – KZNKatana

+0

@KZNKatana: versuchen Sie, aktualisiert Teil – kushal

0

Versuchen Sie folgendes:

WebDriver driver=new FirefoxDriver(); 
driver.manage().window().maximize(); 
driver.get("https://www.quidco.com/join-quidco/");   
driver.findElement(By.xpath(".//label[@id='agree_to_terms_label']")).click();   
driver.findElement(By.xpath(".//label[@id='agree_to_offers_label']")).click(); 

Falls erforderlich Put implizite oder explizite Warte

+0

I nur versucht, diese - kein Glück, ich habe Angst :( – KZNKatana

+0

warten, ich werde versuchen – iamsankalp89

+0

Versuchte es, aber es öffnet die Hyperlinks in dieser Div-Klasse statt, während ich versuche, die Checkbox nur ... Ich habe auch versucht, die Webdriver warten und es immer noch nicht Element finden. Mache ich etwas falsch? – KZNKatana

1

Ihr genaues Element zum Klicken ist ":: before", was ein Pseudoelement ist. Ich denke, dass Sie Javascript verwenden müssten.Im Folgenden Code sollte für arbeiten Sie

WebElement element1 = driver.findElement(By.cssSelector(".left-block")); 
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript("arguments[0].click();", element1); 
+0

Du bist ein absoluter Star - das funktioniert! Es gibt jedoch zwei .left-Block-Klassen im Web html - wüssten Sie, wie ich Selen fragen kann, welches ich möchte? Zum Beispiel möchte ich, dass Spezifische Checkbox 1 (in meiner ursprünglichen Frage) * nur * ausgewählt wird, aber nicht Checkbox 2 (wenn das Sinn macht?) – KZNKatana

+0

Danke, Mann. Sie können den Index immer angeben. So etwas wie 'WebElement element1 = driver.findElement (By.cssSelector (". Left-block ") [Index]);' wo der Index beginnt von 1 – Kapil

+0

Gute Arbeit Liebe :)) – iamsankalp89

Verwandte Themen