Selenium C#如何获得Element

时间:2018-06-11 10:29:38

标签: selenium

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

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

3 个答案:

答案 0 :(得分:2)

您可以点击链接文字

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

或CSS Selector

.btn.green.request-action-btn

答案 1 :(得分:1)

要识别元素,您可以使用以下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')]"))
    
  • XPath 使用normalize-space():

    driver.FindElement(By.XPath("//a[@class='btn green request-action-btn'][normalize-space()='Approve']"))
    

答案 2 :(得分:0)

可以通过使用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();