<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();
答案 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已更改为另一个模板)。