如何找到合适的复选框定位器

时间:2019-02-02 18:34:18

标签: java selenium checkbox

我写在硒的自动测试和我与定位器的一个问题。网站地址:https://talixo.pl/register/?next=/。我找不到最后三个复选框的正确定位器。根据该定位器我用,我得到一个错误“元素不相互作用或复选框被选中,但在新标签页中打开它链接‘阅读更多’下的页面。我没有这个问题,不复选框“更多”链接,请帮助!

public void clickDiscountsCheckBox(){
        WebElement discountsCheckBox = driver
                                       .findElement(By.xpath("//*[@id=\"id_terms_0\"]"));
        discountsCheckBox.click();

这是我遇到的错误:

  

org.openqa.selenium.ElementNotVisibleException:元素不可交互     (会议信息:chrome = 71.0.3578.98)     (驱动程序信息:chromedriver = 2.45.615291(ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform = Windows NT 10.0.17134 x86_64)(警告:服务器未提供任何堆栈跟踪信息)   命令持续时间或超时:0毫秒

2 个答案:

答案 0 :(得分:0)

我转到提供的URL,然后观察到要单击的最后三个复选框是“ :: before”,这是一个伪元素。您是否尝试过JavascriptExecutor?您可以尝试使用CSSSelector识别元素。

答案 1 :(得分:0)

尝试一下。这应该可行。

driver.get("https://talixo.pl/register/?next=/");
            Thread.sleep(4000);
            List<WebElement> listOfElements = 
driver.findElements(By.xpath("//span[@class='label-body']"));

JavascriptExecutor executor = (JavascriptExecutor) driver;
for (int i=0; i<listOfElements.size();i++){
               executor.executeScript("arguments[0].click();",listOfElements.get(i));               
              }

请让我知道是否可行。