ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Webdriver-无法找到元素(Java)

2019-10-10 03:06:46  阅读:13  来源: 互联网

标签:java selenium



我是Selenium和WebDriver的新手.
我有这个HTML

<input id="undefined-undefined-Jobsubject-5546" type="text" value="" data-test="testing-job-subject" style="padding: 0px; position: relative; width: 100%; border: medium none; outline: medium none; background-color: transparent; color: rgb(255, 255, 255); cursor: initial; font: inherit; height: 100%; box-sizing: border-box; margin-top: 14px;"/>

我有这个代码:

driver.findElement(By.xpath("//input[@data-test='testing-job-subject']"));

但错误是:

org.openqa.selenium.NoSuchElementException: Unable to locate element: //input[@data-test=’testing-job-subject’]

我也试过这个:

driver.findElement(By.xpath("//*[starts-with(@id,'undefined-undefined-Jobsubject')]"));

因为id中的数字已生成,所以我不能使用By.id(….),但是会出现相同的错误.
是的,我在代码中有超时,因此元素在页面上.

问题出在哪儿?谢谢

解决方法:

如果您将NoSuchElementException作为提供的异常,则可能有以下原因:-

>可能是当您要查找元素时,该元素将不会出现在DOM上,因此您应该实现WebDriverWait以等待元素可见,如下所示:-

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[data-test='testing-job-subject']")));

>该元素可能位于任何框架或iframe中.如果是这样,则需要在找到以下元素之前切换该框架或iframe:-

WebDriverWait wait = new WebDriverWait(driver, 10);

//Find frame or iframe and switch
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("your frame id or name"));

//Now find the element 
WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[data-test='testing-job-subject']")));

//Once all your stuff done with this frame need to switch back to default
driver.switchTo().defaultContent();


标签:java,selenium

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有