2016-12-15 118 views
0

我試圖創建一個seleniumc#自動UI測試。這裏是我的代碼:c#與硒:元素不可見

driver = new ChromeDriver(); 
    driver.Manage().Window.Maximize(); 
    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30)); 
    driver.Navigate().GoToUrl("my_url"); 
    driver.FindElementById("textBox").Clear(); 
    driver.FindElementById("textBox").SendKeys("tire"); 
    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30)); 
    var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30)); 
    wait.Until((ExpectedConditions.ElementIsVisible(By.Id("Moto")))); 
    driver.FindElementById("Moto").Click(); 

使用wait.until之前,我得到異常ElementNotVisibleException,但現在我得到異常WebDriverTimeoutException因爲id爲「摩托」的元素是不可見的。

這裏是DOM的一部分截圖:

enter image description here

那麼,爲什麼moto的複選框沒有發現或不可見?

回答

1

嘗試下面的代碼(Java),因爲它是在我結束工作了相同的結構 -

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

我不知道爲什麼它是造成問題,通過ID查找<input>標籤

+0

它不起作用。我仍然得到一個ElementNotVisible異常 –

+0

它似乎是=「摩托」它的標籤覆蓋了我的輸入,這就是爲什麼它不可見 –

+1

請試試這個,它可能有幫助 - 'WebElement element = driver.findElement(By.xpath( 「//輸入[@ ID = '納西克']」)); \t \t JavascriptExecutor js =(JavascriptExecutor)驅動程序; \t \t js.executeScript(「arguments [0] .click();」,element);' – NarendraR

0

您可能需要滾動到該元素以使其可見

IWebElement moto = driver.FindElement(By.Id("Moto")); 

Actions actions = new Actions(driver); 
actions.MoveToElement(moto).Perform(); 

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30)); 
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("Moto"))).Click(); 
+0

它不起作用。我仍然得到一個WebDriverTimeoutException異常 –

+0

@BudaGavril在複選框的祖先樹中是否有一個屬性'style =「display:none」'? – Guy

+0

它似乎是=「摩托」它的標籤覆蓋了我的輸入,這就是爲什麼它不可見 –