2017-03-01 4 views
0

Ich versuche auf ein Element für den Stil zu klicken ist style = "display: block;" aber nicht in der Lage dazu zu tun.Klicken auf ein style = "display: block;" in selen webdriver

unten ist die html Code

<div class="fl f18 dtoggler pointer underline some-padding new_data_entry" data-div-id="eBWJcg" data-div-ref="new_Passport_form.eBWJcg">+ Add Passport</div> 
<div class="clear new_Passport_form qEgULQ some-margin togglable" style="display: none;"> 

Selenium Code:

driver.get("idfystaging.com/users/sign_in"); 
driver.findElement(By.name("user[login]")).sendKeys("rustam1‌​@yopmail.com"); 
driver.findElement(By.name("user[password]")).sendKeys("Pass‌​word123"); 
driver.findElement(By.name("commit")).click();  
driver.switchTo().frame("upload_iframe_1"); 
driver.findElement(By.cssSelector("body")).sendKeys(Keys.ESC‌​APE); 
JavascriptExecutor executor= (JavascriptExecutor)driver; 
executor.executeScript("document.getElementById('qEgULQ').st‌​yle.display='block';‌​");click(); 

Fehlerprotokoll:

Cannot read property 'style' of null. 
+0

Können wir den Selencode haben? –

+1

Was meinst du mit * nicht in der Lage * zu tun? Was ist das Problem? – Guy

+0

@ kyle ich bekomme Fehler, der Eigenschaft "Stil" von null nicht lesen kann. –

Antwort

0

qEgULQ ist Klasse, nicht id. Versuchen

executor.executeScript("document.getElementsByClassName('qEgULQ').st‌​yle.display='block';‌​"); 
+0

erhalten folgenden Fehler "unbekannter Fehler: Runtime.evaluate warf Ausnahme: SyntaxError: Ungültiges oder unerwartetes Token" –

0

Sie versuchen, mit id="qEgULq"Javascript auf das Element anzuwenden, während Sie Element müssen mit class="qEgULq":

Ersetzen Sie einfach

executor.executeScript("document.getElementById('qEgULQ').st‌​yle.display='block';‌​"); 

mit

executor.executeScript("document.querySelector('div.clear.new_Passport_form.qEgULQ.some-margin.togglable').st‌​yle.display='block';‌​"); 

Beachten Sie auch, dass Ihre click(); aus versehen Stück Code nicht an das Element auf einige Ereignisse

Update-dynamisch oder zugewiesen

Wenn einige Klassennamen erzeugt gerade sind nicht gebunden, können Sie mit dem Klassennamen als Locator vermeiden:

WebElement targetDiv = driver.findElement(By.xpath("//div[text()='+ Add Passport']/following-sibling::div")); 
executor.executeScript("arguments[0].st‌​yle.display='block';‌​", targetDiv); 
+0

auf welche dieser Zeilen? – Andersson

+0

executor.executeScript ("document.getElementsByClassName ('div.clear.new_Passport_form.qEgULQ.some-margin.toggable'). St yle.display = 'block';"); –

+0

update: Beim Klicken auf + Hinzufügen von Passport Style-Änderungen von style = "display: none;" zu style = "display: block;" –

Verwandte Themen