然后我试试这个,它运行正常:
driver.FindElement(By.CssSelector(".follow-text")).Click();
但只有第一个运行正常,我如何选择具有相同css的第二个按钮" .follow-text"?
添加数字[2]对我不起作用:
driver.FindElement(By.CssSelector(".follow-text")).Click();
driver.FindElement(By.CssSelector(".follow-text[2]")).Click();
任何帮助都是精彩的
答案 0 :(得分:1)
您的XPATH非常依赖于类的顺序。某些框架可能会将一个类放在另一个类之前,并在每次页面呈现时更改它。看看你的一个xpath选择器。
//button[@class='user-actions-follow-button js-follow-btn follow-button btn small small-follow-btn']
匹配:
<button class="user-actions-follow-button js-follow-btn follow-button btn small small-follow-btn">
如果输出为?:
<button class="user-actions-follow-button btn small follow-button small-follow-btn">
现在你的选择器完全无用,因为它严重依赖于单词顺序。如果您使用CSS,则可以使用.
:
By.CssSelector("button.user-actions-follow-btn.btn.small.follow-button.small-follow-btn")
这个选择器不关心类所在的顺序,只要它按某种顺序包含所有类。
如果您需要更多相关信息,请查看this page,这可能有助于为Selenium制定有效的CSS选择器