无法在使用java的Selenium Webdriver中选择复选框
我正在尝试选择一个复选框,但我无法选择,也没有在其他线程中找到任何解决方案无法在使用java的Selenium Webdriver中选择复选框,java,selenium,selenium-webdriver,xpath,css-selectors,Java,Selenium,Selenium Webdriver,Xpath,Css Selectors,我正在尝试选择一个复选框,但我无法选择,也没有在其他线程中找到任何解决方案 new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click(); new WebDriverWait(driver, 20).until(Expecte
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
以下是下拉列表的HTML代码:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
代码:
@FindBy(css=“input.ngvalid.ngdirty.ng”)
WebElement-chrcfee
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
chrcfee.click()
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
但当我以同样的方式定义和使用时,它并不像其他复选框那样工作。我发现与其他代码相比的区别在于,这里的html代码有额外的一行
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
请建议如何定义,以便识别
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
获取错误:
org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{“方法”:“css选择器”,“选择器”:“input.ng valid.ng dirty.ng toucted”}
(会话信息:chrome=69.0.3497.92)所需元素是一个元素,因此您必须引导WebDriverWait使该元素可单击,并且您可以使用以下任一解决方案:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
:css选择器
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
:xpath
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
JavascriptExecutor js=(JavascriptExecutor)驱动程序
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
js.executeScript(“参数[0]。单击();”,CamWizOR.chrgAllocFee)
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
CamWizOR.chrlocfee->WebElement name
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
@FindBy(xpath=“//输入[@name='ChargeAllocationFee'和@type='checkbox']”)
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();
WebElement-chrcfee 不应该是
@FindBy(css=“input.ng valid.ng dirty.ng toucted”)
?我错了,有两个类。我第一个是@FindBy(css=“input.ng valid.ng dirty.ng toucted”)web元素chrgAllocFee;错误:org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{“方法”:“css选择器”,“选择器”:“input.ng valid.ng dirty.ng toucted”}(会话信息:chrome=69.0.3497.92)这可能不相关,但为什么不使用id来查找元素?另外,您可能需要引入等待/超时,以便selenium可以检测元素的存在性。即使它不是一个动态元素,如果代码依赖于某种服务器处理,它仍然可能有一些加载问题。再说一遍,为什么不使用id来获取元素,并且您是否尝试过引入一种等待直到元素可单击的代码?仍然会出现相同的错误..尽管我发现现在类名更改了费用分配费?虽然我更改了名称,但仍然无法使用您提到的上述解决方案。
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-valid.ng-dirty.ng-touched[name='ChargeAllocationFee']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-valid ng-dirty ng-touched' and @name='ChargeAllocationFee']"))).click();