单击outlook上的以下按钮时遇到问题:
<a data-m="{"cN":"SIGNIN", "sN":"P6", "pV":"1"}" href="https://outlook.live.com/owa/?nlp=1" class="internal sign-in-link" data-task="signin">Sign in</a>
我尝试了以下两种代码:
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[contains(text(), 'Sign in')]"))).click();
和
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@data-task='signin']"))).click();
终端为他们两个发送一个模糊的nosuchelementexception。
XPath可能不正确吗?
2条答案
按热度按时间3df52oht1#
您可以从googlechrome浏览器复制完整的xpath,然后粘贴到您的代码中。要复制它,请按ctrl+shift+i,找到元素并单击copy>copyfullxpath。
这是您的完整xpath:
下面的python代码适合我:
kognpnkq2#
元素是动态元素,所以
click()
在元素上使用文本作为登录,而不是使用visibilityOfElementLocated()
你需要诱导webdriverwaitelementToBeClickable()
您可以使用以下任一定位器策略:linkText
:new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("a.internal.sign-in-link[data-task='signin']"))).click();
```
xpath
:参考文献
关于nosuchelementexception,您可以在以下内容中找到一些相关的详细讨论:
线程“main”org.openqa.selenium.nosuchelementexception中出现异常:找不到元素://*[@id='login-email']
ie中的org.openqa.selenium.nosuchelementexception错误,但在chrome和firefox中同样的代码可以正常工作