微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

等待By.xpath

如何解决等待By.xpath

您能告诉我为什么我找不到定位按钮后出现的某些类吗?

  1. 单击切换按钮,应该启用注册按钮。
  2. 然后尝试找到与该按钮关联的类,然后单击它,然后说找不到它。

image

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 举报,一经查实,本站将立刻删除。