【问题标题】:Exception in thread "main" org.openqa.selenium.ElementNotInteractableException: element not interactable线程“主”org.openqa.selenium.ElementNotInteractableException 中的异常:元素不可交互
【发布时间】:2021-03-10 03:00:39
【问题描述】:

我有以下代码:

导入 java.util.HashMap; 导入 java.util.Map;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedConditions;

public class LoginToThePortal {
     public static void main(String[] args) throws InterruptedException
     {
    
    
         System.setProperty("webdriver.chrome.driver","C:\\chromedriver\\chromedriver.exe");
         WebDriver driver=new ChromeDriver();
         driver.manage().window();
         driver.get("");
         Thread.sleep(2000);
         WebElement username=driver.findElement(By.id("sfdc_username_container"));
         Thread.sleep(5000);
         WebElement password=driver.findElement(By.id("sfdc_password_container"));
         WebElement login=driver.findElement(By.xpath("//*[@id=\"centerPanel\"]/div/div[2]/div/div[2]/div/div[3]/button/span"));
         username.sendKeys("");
         password.sendKeys("");
    
          login.click();
         
        
    }
    }

我收到以下错误:

Exception in thread "main" org.openqa.selenium.ElementNotInteractableException: element not interactable.

我不明白我怎么错了。 我会提到我在开始。 (我还在学习)。 有人可以看看吗?

【问题讨论】:

    标签: java selenium selenium-webdriver css-selectors webdriverwait


    【解决方案1】:

    您可以尝试以下更新的 xpath,希望这能解决您的问题

      System.setProperty("webdriver.chrome.driver","C:\\chromedriver\\chromedriver.exe");
        WebDriver driver=new ChromeDriver();
        driver.manage().window();
        driver.get("https://qa-advisor.cs105.force.com/s/login/");
        Thread.sleep(2000);
        WebElement username = driver.findElement(By.xpath
               ("//div[@id='sfdc_username_container']//child::div/input[1]"));
        Thread.sleep(5000);
        WebElement password = driver.findElement(By.xpath
               ("//div[@id='sfdc_password_container']//child::div/input[1]"));
        WebElement login = driver.findElement(By.xpath
               ("//button[@class='slds-button slds-button--brand loginButton uiButton- 
                             -none uiButton']//child::span"));
        username.sendKeys("test");
        password.sendKeys("test");
        login.click();
    

    【讨论】:

    • 你能编辑你的答案并删除截图吗?
    【解决方案2】:

    要将字符序列发送到用户名密码字段,您需要使用WebDriverWait作为elementToBeClickable(),您可以使用以下 基于Locator Strategies

    driver.get("https://qa-advisor.cs105.force.com/s/login/");
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div#sfdc_username_container input[placeholder='Username']"))).sendKeys("Test");
    driver.findElement(By.cssSelector("div#sfdc_password_container input[placeholder='Password']")).sendKeys("Test");
    

    浏览器快照:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 2020-09-28
      • 2017-12-24
      • 2017-10-22
      • 2023-02-24
      • 2020-08-26
      相关资源
      最近更新 更多