2016-07-21 31 views
1

我正在使用一箇舊門戶,我必須使用IE。有一些東西,它沒有找到,因爲它是<td>菜單的一部分,我試圖通過XPath找到它,但沒有幫助。Selenium c#如何通過JavaScript找到元素?

我發現窗體正在渲染一個JavaScript函數。我想點擊他們只是爲了執行它,但我怎麼能找到頁面元素使用硒WebDriver

例如:如果我有這個代碼

<div class="logout-link ng-scope" 
    ng-click="login(&quot;github&quot;)" 
    ng-show="!me" ng-controller="MenuCtrl">login</div> 

我如何執行與硒的webdriver的NG-點擊一部分?

+0

你是什麼意思''我試圖找到它的XPath,但沒有幫助。.. ..有什麼異常或任何其他..也是如此 –

+0

嗯,因爲我沒有網絡的真實代碼。這是在另一個我無法提取任何代碼的電腦上,所以我決定另闢一個例子。有一個工具欄和XPath找到每個工具,但我不能點擊一個,因爲所有的具有相同的屬性,但JavaScript。所以我需要執行一個特定的JavaScript。這就是爲什麼。 –

+0

我喜歡接受的答案與tittle無關。 https://stackoverflow.com/questions/11688694/selenium-error-when-using-javascript-or-getting-elements – George

回答

0

你爲什麼要執行Javascript定位元素嘗試使用WebDriverWait等到元素可見並且可以點擊如下: -

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 

var Login = wait.Until(ExpectedConditions.ElementToBeClickable(By.Xpath("//div[text() = 'login']"))); 
Login.Click(); 

注意: - 確保前試試這個元素不是內部的任何frame

希望它可以幫助.....: )

+1

你說得對,這真的對我很有用,非常感謝你! –

+0

@NancyCruz歡迎您。樂意效勞..:)..我建議下次你提問時,至少提供一些足夠的信息,說明你試過了什麼,結果是什麼,如果異常會分享,那麼經驗豐富的人可以毫不猶豫地給你一個正確的解決方案。無論如何快樂學習...... :) –

0
  1. 確保您試圖找到它所在的同一幀中的元素。回答樣本:How to switch between frames in Selenium WebDriver using Java
  2. 嘗試等待元素出現,可用:http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp
  3. 希望你知道如何找到通過JS元素(document.getElementsByClassName(「註銷鏈接NG-範圍」)),這裏是答案在炎熱的在C#中使用JS:Execute JavaScript using Selenium WebDriver in C# - 唯一的區別是,你不需要返回任何東西 - 你只需要「點擊()」
+0

謝謝。它不適用於框架,因爲網絡沒有任何框架。我實際上使用了等待,而且效果很好。這不是真正的代碼,在真實的代碼中沒有任何可以識別的id或classname。 –

0

單擊您創建的Web元素上執行相應的功能。通過對CSS選擇器看NG點擊:

IWebElement elem = driver.FindElement(By.CssSelector("div[ng-click=login(&quot;github&quot;)]")); 
elem.click(); 

你也可以建立一個動作移動到元素,然後單擊它:

IWebElement elem = driver.FindElement(By.CssSelector("div[ng-click=login(&quot;github&quot;)]")); 
Actions action = new Actions(driver); 
action.MoveToElement(elem).Click().Build().Perform(); 
+0

這個人給我一個錯誤:「無效的選擇器:指定了一個無效或非法的選擇器\ n」 –

相關問題