2017-03-01 151 views
0

我想點擊一個元素的風格是style =「display:block;」但無法這樣做。下面點擊style =「display:block;」在硒webdriver

html代碼

<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代碼:

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(); 

錯誤日誌:

Cannot read property 'style' of null. 
+0

我們可以有Selenium代碼嗎? –

+1

你的意思是*不能這樣做*?問題是什麼? – Guy

+0

@kyle我收到錯誤,無法讀取null的屬性'樣式'。 –

回答

0

qEgULQ是類,而不是ID。嘗試

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

獲取以下錯誤「未知錯誤:Runtime.evaluate拋出異常:SyntaxError:無效或意外的標記」 –

0

你想申請Javascript到元素與id="qEgULq",而你需要用元素class="qEgULq"

只需更換

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

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

還要注意,你的click();從如果某些類名是動態生成或分配的只是一些事件的代碼提供一塊不綁定元素

更新

,你能避免使用類名作爲定位:

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

上哪些行? – Andersson

+0

executor.executeScript(「document.getElementsByClassName('div.clear.new_Passport_form.qEgULQ.some-margin.togglable')。st yle.display ='block';」); –

+0

更新:點擊+添加護照樣式更改從style =「display:none;」到style =「display:block;」 –