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("github")"
ng-show="!me" ng-controller="MenuCtrl">login</div>
如何使用SeleniumWebDriver执行ng-click部分?
- 确保您正在尝试在元素所在的同一框架中查找元素。答案示例:如何使用Java在Selenium WebDriver中的帧之间切换
- 尝试等待元素出现并可用:http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp
- 希望你知道如何通过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("github")]"));
elem.click();
你也可以构建一个移动到元素的动作,然后点击它:
IWebElement elem = driver.FindElement(By.CssSelector("div[ng-click=login("github")]"));
Actions action = new Actions(driver);
action.MoveToElement(elem).Click().Build().Perform();