我已经浏览了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()
答案 0 :(得分:1)
在呈现元素后,您必须通过页面中的HTML找到该元素,以便不能使用cshtml变量名称。话虽如此,您应该能够找到一个可行的定位器。我会从像
这样的CSS选择器开始a[href='#edit']
除非您在页面上有多个编辑链接,否则这应该有效。如果这不起作用,我会尝试
a[href='#edit'][id$='-display']
答案 1 :(得分:0)
要查找元素并在元素上调用click()
,您可以使用以下任一Locator Strategies:
xpath (ID
包含-display
且href
为#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']"