【发布时间】:2021-02-12 19:04:41
【问题描述】:
我将 Selenium Webdriver 与 ChromeDriver 一起使用。用 XPath 掌握我的技能。
这是我尝试执行的一段代码:
WebDriver driver;
String baseURL = "http://youtube.com";
System.setProperty("webdriver.chrome.driver", "/Users/svetlana_yatsushko/Documents/workspace/selenium/chromedriver");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get(baseURL);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
driver.findElement(By.xpath("//*[@id='dismiss-button']//descendant::yt-formatted-string[1]")).click();
我有一个错误:
线程“主”org.openqa.selenium.NoSuchElementException 中的异常: 没有这样的元素:无法找到元素: {"method":"xpath","selector":"//*[@id='dismiss-button']//descendant::yt-formatted-string[1]"}
我还尝试编写其他 XPaths 选项,例如
//*[@aria-label='No, thanks']//*[@id='button']//*[text()='No, thanks']
但是没有一个工作稳定,尽管这些 XPath 已在 Elements 和 Console 中找到并且有 1 个匹配节点。
我注意到一种情况,例如,可以在 5 次中找到 2 次。或者有时连续5次都找不到... 可能这是关于 XPath 问题,但我无法得到原因。
希望你有类似的东西可以帮助我。
【问题讨论】:
-
尝试在点击元素前添加
driver.implicitly_wait(10) -
试过了——它有效!而且看起来工作稳定:) 非常感谢!
标签: selenium selenium-webdriver xpath automated-tests