我已经编写了以下代码来选择单选按钮,它工作正常,但今天它不工作。请找到代码和相应的错误消息
代码1:
WebDriverWait wait = new WebDriverWait(driver,10);
WebElement radio = wait.until (ExpectedConditions.presenceOfElementLocated(By.id("0_2485A_StartDate")));
((JavascriptExecutor)driver).executeScript("arguments[0].click()", radio);
ERROR1: '在线程中的异常“main”org.openqa.selenium.TimeoutException:在等待位于以下位置的元素存在10秒后超时:By.id:0_2485A_StartDate'
代码2:
WebDriverWait wait = new WebDriverWait(driver,10);
WebElement radio = wait.until (ExpectedConditions.presenceOfElementLocated(By.id("Radio_0_2485A")));
((JavascriptExecutor)driver).executeScript("arguments[0].click()", radio);
误差2: '线程中的异常“main”org.openqa.selenium.TimeoutException:等待位于10秒后超时的元素:By.id:Radio_0_2485A'
CODE3:
WebDriverWait wait = new WebDriverWait(driver,10);
WebElement radio = wait.until(ExpectedConditions.elementToBeClickable(By.id("0_2485A_StartDate")));
radio.click();
误差3: '线程中的异常“main”org.openqa.selenium.TimeoutException:等待元素可点击10秒后超时:By.id:0_2485A_StartDate'
码4:
WebDriverWait wait = new WebDriverWait(driver,10); WebElement radio = wait.until(ExpectedConditions.elementToBeClickable(By.id(“Radio_0_2485A”))); radio.click();
Error4: '线程中的异常“main”org.openqa.selenium.TimeoutException:等待元素可点击10秒后超时:By.id:Radio_0_2485A'
HTML:
<th class="radio">
<input id="0_2485A_StartDate" type="hidden" value="18/12/2015 00:01:00">
<input name="Products[0].ProductCode" title="5 Year Fixed Rate Until 28/02/2021 with £999 Fee" id="Radio_0_2485A" type="radio" value="2485A">
<label for="Radio_0_2485A">
5 Year Fixed Rate Until 28/02/2021 with £999 Fee
</label>
</th>
请建议。
答案 0 :(得分:0)
presenceOfElementLocated
只需检查DOM
中存在的元素,因此,如果您将此代码与ExpectedConditions
一起使用,那么您的代码就能正常运行。
但正如我所看到的,异常堆栈跟踪声明您正在使用elementToBeClickable
,实际上elementToBeClickable
用于等待元素可见且可点击,而找到的元素被隐藏且永远不可见。
您正在找到隐藏的元素,这就是您遇到麻烦的原因。
你应该尝试找到如下的实际无线电元素: -
WebDriverWait wait = new WebDriverWait(driver,10);
WebElement radio = wait.until(ExpectedConditions.elementToBeClickable(By.id("Radio_0_2485A")))
radio.click()
答案 1 :(得分:0)
我无法复制您的实际网络浏览器方案,但只是尝试复制您的HTML代码并放入一个简单的html模板。我看到你几乎尝试了所有东西......如果可能的话,你可以把网址给别人看看页面。
我试过这样:
driver.findElement(By.xpath("//input[@value='2485A']")).click();
它有效。如果这有帮助,请告诉我。