2016-11-23 35 views
7

Tôi muốn kiểm tra xem một phần tử có tồn tại trong Selenium hay không, và nếu có, hãy gán nó vào một tên.Kiểm tra xem Phần tử có tồn tại trong Selenium

Ngay bây giờ tôi có cái gì đó trông như thế này:

IWebElement size9 = driver.FindElement(By.CssSelector("a[data-value*='09.0']")); 

Tuy nhiên, khi mà phần tử có giá trị của 9 không tồn tại, nó sẽ trả về một lỗi. Có cách nào tôi có thể kiểm tra xem nó có tồn tại không, hay thứ gì đó thuộc loại đó?

Trả lời

9

Có một số tùy chọn. Tôi đề nghị những điều này.
1. Tạo một phương pháp hoặc tiện ích mở rộng trình điều khiển web.

public static IWebElement FindElementIfExists(this IWebDriver driver, By by) 
{ 
    var elements = driver.FindElements(by); 
    return (elements.Count >=1) ? elements.First() : null; 
} 

// Usage 
var element = driver.FindElementIfExists(By.CssSelector("a[data-value*='09.0']")); 


2. Đếm phần tử, lấy nó nếu có 1 hoặc nhiều phần tử.

By by = By.CssSelector("a[data-value*='09.0']"); 
var element = driver.FindElements(by).Count >= 1 ? driver.FindElement(by) : null; 

Sau đó, bạn có thể kiểm tra if(element != null) { ... }

0

Bạn sẽ có thể làm điều gì đó như:

public static bool IsElementPresent_byCssSelector(string elementName) 
    { 
     try { Driver.FindElement(By.CssSelector(elementName)); } 
     catch (NoSuchElementException) { return false; } 
     catch (StaleElementReferenceException) { return false; } 
     return true; 
    } 


var test = driver.IsElementPresent_byCssSelector("a[data-value*='09.0']"); 

if(test) 

{ 
//do something 
} 
+0

Tôi không nghĩ rằng việc này trên C#. Bạn có thể kiểm tra? – Buaban

+0

Hmm phương pháp không được đính kèm. Đã cập nhật ở trên. – Dazed

Các vấn đề liên quan