我想点击一个按钮,到目前为止,我正在使用 XPATH,但有时页面发生了变化,我必须更新 XPATH。
我正在检查不同的方式(搜索并单击图像,如播放.png,按文本单击等(,以获得相同的结果。
在 HTML 代码部分之后:
<button class="btn btn-green false">PLAY</button>
编辑:
我已经尝试过代码
driver.findElement(By.xpath("//*[contains(text(),’PLAY’]")).click();
但它例外
Exception in thread "main" org.openqa.selenium.TimeoutException: Expected condition failed: waiting for element to be clickable: By.xpath: //*[contains(text(),’PLAY’] (tried for 10 second(s) with 500 milliseconds interval)
at org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:95)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:272)
at seleniumTest.TestSelenium.play(TestSelenium.java:300)
at seleniumTest.TestSelenium.open_url(TestSelenium.java:277)
at seleniumTest.TestSelenium.seleniumTest(TestSelenium.java:108)
at seleniumTest.TestSelenium.main(TestSelenium.java:85)
Caused by: org.openqa.selenium.InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression //*[contains(text(),’PLAY’] because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//*[contains(text(),’PLAY’]' is not a valid XPath expression.
当属性的值是动态的时,您也可以使用 包含或 starts-with((,即像这样变化:
//*[contains(text(),’PLAY’)]
你必须找到一些不会改变的东西。
例如,您可以使用通配符在 XPath 中执行此操作:
//button[text()='PLAY']
你也可以使用其他方法来识别硒中的元素。
例如By.id(...)
元素是否具有唯一 ID。
见硒文档的类 由