Selenium:如何单击变量按钮

时间:2018-01-25 15:24:51

标签: c# selenium xpath

<a id="btn_yyyy_69" href="javascript:void(0);"
 onclick="checkOnline(this,'69','UCnHasdadhrz3mTd1A7t5TQ','yyyy');"
 class="gbut_red">Yepsribe</a>

和xpath一样//*[@id="btn_yyyy_69"] - 69,它不断变化。

我试过这样的话;

WebDriverWait waitc = new WebDriverWait(driver, TimeSpan.FromSeconds(15));
waitc.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='btn_yyyy_")));
driver.FindElement(By.XPath("//*[@id='btn_yyyy_")).Click();

3 个答案:

答案 0 :(得分:2)

如果您想要按部分@id值匹配链接,可以尝试

By.XPath("//a[starts-with(@id, 'btn_yyyy_')]")
By.CssSelector("a[id^='btn_yyyy_']")

您还可以通过其文本找到链接:

By.LinkText("Yepsribe")

答案 1 :(得分:0)

如果这是唯一一个id为btn_yyyy的按钮,请使用:

//a[contains(@id, 'btn_yyyy')]

只有当这是唯一一个带有带有该符号的id的按钮时,这才有效。

如果有多个按钮的部分ID为btn_yyyy且这是唯一带有文本Yepsribe的按钮,请尝试:

//a[contains(@id, 'myclass') and text() = 'Yepsribe']

答案 2 :(得分:0)

我认为

//a[text()='Yepsribe']

是查找具有动态ID的元素的最佳方式。 它还可以防止您更改代码(例如,所有按钮类或ID已更改为另一个模板)。