如何解决等待By.xpath
您能告诉我为什么我找不到定位按钮后出现的某些类吗?
- 单击切换按钮,应该启用注册按钮。
- 然后尝试找到与该按钮关联的类,然后单击它,然后说找不到它。
chromeDriver.findElement(By.xpath("//input[@name='email']")).sendKeys("test@test.com");
chromeDriver.findElement(By.xpath("//input[@name='password']")).sendKeys("test");
chromeDriver.findElement(By.xpath("//div[@class='button button-primary button-disabled']"));
chromeDriver.findElements(By.xpath("//div[@class='sign-up-row']")).get(1).click();
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='button button-primary']")));
或
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='button button-primary']"))).click();
或者它确实找到了类,但是元素不能交互
chromeDriver.findElement(By.xpath("//div[@class='button button-primary']"));
解决方法
您可以使用下面的定位器。
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='button-hover-wrapper']//div[contains(text(),'Sign up')]"))).click();
或
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='button button-primary']//div[contains(text(),'Sign up')]"))).click();
,
您可以尝试等待进度动画的隐身性,然后再查找元素或直接等待signup元素
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[contains(text(),'Sign up')]"))).click();
或使用轮询
WebDriverWait wait = new WebDriverWait(driver,15);
wait.pollingEvery(1,TimeUnit.SECONDS);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[contains(text(),'Sign up')]"))).click();
,
要在注册上使用click()
而不是visibilityOfElementLocated()
,则需要为elementToBeClickable()
引入WebDriverWait,并且可以使用以下任一方法Locator Strategies:
-
cssSelector
:new WebDriverWait(driver,20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.sign-up-row +p +div > div.button-inner"))).click();
-
xpath
:new WebDriverWait(driver,20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='button button-primary']//div[@class='button-inner' and text()='Sign up']"))).click();
参考文献
您可以在以下位置找到一些相关的讨论
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。