Selenium C#如何获得Element

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium C#如何获得Element相关的知识,希望对你有一定的参考价值。

  <a href="javascript:;" class="btn green request-action-btn" data-request-status="Approved" data-id="212"> Approve </a>

如何在selenium C#中获取此元素。我试过:href,Xpath,ID,类名,文本名,但我无法得到这个元素

答案

您可以点击链接文字

driver.FindElement(By.LinkText("Approve")).Click();

或者通过CSS Selector

.btn.green.request-action-btn
另一答案

要识别元素,您可以使用以下Locator Strategy

  • CssSelector: driver.FindElement(By.CssSelector("a.btn.green.request-action-btn[data-request-status='Approved']"))
  • XPath的: driver.FindElement(By.XPath("//a[@class='btn green request-action-btn' and @data-request-status='Approved']"))
  • XPath使用contains(): driver.FindElement(By.XPath("//a[@class='btn green request-action-btn'][contains(.,'Approve')]"))
  • 使用normalize-space()的XPath: driver.FindElement(By.XPath("//a[@class='btn green request-action-btn'][normalize-space()='Approve']"))
另一答案

可以通过使用tagName找到它,如下所示:

ReadOnlyCollection<IWebElement> anchrTags= driver.FindElements(By.TagName("a"));
IWebElement roWebElement = anchrTags.Where(x => x.Text == "Approve").FirstOrDefault();

否则,如果帧中存在锚标记,则无法找到它。尝试切换到该帧:

IWebElement iframe = driver.FindElements(By.Id("iframeId"));
driver.SwitchTo().Frame(iframe);
IWebElement roWebElement = anchrTags.Where(x => x.Text == "Approve").FirstOrDefault();

以上是关于Selenium C#如何获得Element的主要内容,如果未能解决你的问题,请参考以下文章

我如何通过Selenium获得股票代码?

如何告诉JAVA Selenium WebDriver从html中找到text-element

我们如何使用Selenium Webdriver C#从URL获取特定值?

python下用selenium的webdriver包如何取得打开页面的html源代码呢

selenium如何定位非select的下拉框?

selenium api