我在过去已经删除了一个Href按钮,并没有发现它太难,但这个按钮是一个痛苦。我尝试过通过xpath、类和链接文本单击。但没有一个奏效。我知道有很多同样的问题,但其中大多数给出的答案我已经在尝试了。下面是我的代码。我没有尝试过的一件事是javascriptexecutor。我也一直在点击它在chrome的命令行,它确实工作。只是不能得到硒。它抛出一个未找到的元素。此外,我觉得值得注意的是,我没有找到任何我需要切换到的iframe。唯一让我担心的事情,也许我没有硒的知识来处理的是HTML提到header
,main
,section
,div
,ul
,li
和a
,除了ul
和li
,我以前都见过。谢谢你提供的任何帮助。
wait.Until(ExpectedConditions.ElementToBeClickable(By.ClassName("card-header-link float-md-right"))).Click();
wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("/html/body/div[1]/main/section[1]/div/ul/li[5]/a"))).Click(); //full xpath
wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='app']/main/section[1]/div/ul/li[5]/a"))).Click();
wait.Until(ExpectedConditions.ElementToBeClickable(By.LinkText("Security"))).Click();
HTML
<li data-v-91f16f3e="">
<a data-v-91f16f3e="" href="/security" class="">
<span data-v-91f16f3e="" class="icon icon-shield"></span>
<span data-v-91f16f3e="" class="text">Security</span></a>
</li>
试试这个xpath:
//span[text()='Security']/..
或
//span[text()='Security']/parent::a[@href='/security']
wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//span[text()='Security']/.."))).Click();
但奇怪的是,By.LinkText("Security")
没有工作。
Update 1:
试试这个css选择器
div[class$='desktop'] li a[href$='security']
代码:
wait.Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("div[class$='desktop'] li a[href$='security']"))).Click();
我看到href
属性值是小写的security
,而不是Security
.
所以,请试试这个:
wait.Until(ExpectedConditions.ElementToBeClickable(By.Xpath("//a[contains(@href,'security')]"))).Click();