Selenium c#如何使用JavaScript查找Element

本文关键字:查找 Element JavaScript 何使用 Selenium | 更新日期: 2023-09-27 17:58:01

我使用的是一个旧门户,必须使用IE。有些东西它找不到,因为它是<td>菜单的一部分,我试图通过XPath找到它,但没有帮助。

我发现表单是由JavaScript函数呈现的。我想点击它们只是为了执行它,但如何使用selenium WebDriver定位页面元素??

例如:如果我有这个代码

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

如何使用SeleniumWebDriver执行ng-click部分?

Selenium c#如何使用JavaScript查找Element

  1. 确保您正在尝试在元素所在的同一框架中查找元素。答案示例:如何使用Java在Selenium WebDriver中的帧之间切换
  2. 尝试等待元素出现并可用:http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp
  3. 希望你知道如何通过JS(document.getElementsByClassName('logout-link ng-scope'))找到元素,下面是在C#中使用JS的热门答案:在C#中用SeleniumWebDriver执行JavaScript-唯一的区别是你不需要返回任何东西-你只需要'.click()'

为什么要执行Javascript来定位元素???尝试使用WebDriverWait等待元素可见并可点击,如下所示:-

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
var Login = wait.Until(ExpectedConditions.ElementToBeClickable(By.Xpath("//div[text() = 'login']")));
 Login.Click();

注意:-在尝试之前确保此元素不在任何frame

希望能有所帮助……:)

单击您创建的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();