Selenium WebDriver - 查找元素

时间:2018-02-20 18:19:48

标签: selenium testing selenium-webdriver selenium-chromedriver

我已经浏览了Selenium Documentation for locating elements,但我似乎无法弄清楚如何在我的代码中找到该元素。

这是我的.cshtml代码:

<a onclick="alter('@key', '@value')" href="#edit" id="@key-display">@value</a>

我想找到并点击最后的@value。 以下是我在Chrome上检查值时的样子:

<a onclick="alter('February 9, 2018', '1.00000')" href="#edit" id="February 9, 2018-display">1.00000 gallons</a>

我能够通过链接文本找到元素,如下所示:

chromeDriver.FindElementByLinkText("1.00000 gallons").Click();

但是,链接文本会不断变化,我希望能够在更改后找到它。

我尝试过几种方式定位:

chromeDriver.FindElementByLinkText("@value").Click();

chromeDriver.FindElementByXPath("//a[@id='@key-display']").Click();

chromeDriver.FindElementById("@key-display").Click()

2 个答案:

答案 0 :(得分:1)

在呈现元素后,您必须通过页面中的HTML找到该元素,以便不能使用cshtml变量名称。话虽如此,您应该能够找到一个可行的定位器。我会从像

这样的CSS选择器开始
a[href='#edit']

除非您在页面上有多个编辑链接,否则这应该有效。如果这不起作用,我会尝试

a[href='#edit'][id$='-display']

答案 1 :(得分:0)

要查找元素并在元素上调用click(),您可以使用以下任一Locator Strategies

  • xpath ID包含-displayhref#edit

    "//a[contains(@id,'-display') and @href='#edit']"
    

    您可以更精细地将onclick属性添加为:

    "//a[contains(@id,'-display') and @href='#edit' and starts-with(@onclick,'alter')]"
    
  • cssSelector (其中ID-display结尾,href#edit

    "//a[id$='-display'][href='#edit']"
    

    您可以更精细地将onclick属性添加为:

    "//a[id$='-display'][href='#edit'][onclick^='alter']"