C# Selenium:如何单击变量按钮

C# Selenium:如何单击变量按钮,c#,selenium,xpath,C#,Selenium,Xpath,如果这是唯一一个id为btn_yyyy的按钮,请使用: 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();

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

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();
只有当这是唯一一个id中带有该符号的按钮时,这种方法才有效

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

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

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

//a[contains(@id, 'myclass') and text() = 'Yepsribe']
您还可以通过其文本定位链接:

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

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

如果id不断更改,则这将有助于您选择一个不更改的属性,如果没有其他选择,则选择文本。drutubeview.FinDelelement(By.CssSelector(“[id$=btn_ysub]”)。单击();不工作:(
By.LinkText("Yepsribe")
//a[text()='Yepsribe']