如何解决特定于网站的无效点击

时间:2019-02-11 10:11:27

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

登录的HTML代码如下:

<input id="login:login_btn" name="login:login_btn" onclick="A4J.AJAX.Submit('login',event,{'oncomplete':function(request,event,data){},'similarityGroupingId':'login:login_btn','parameters':{'login:login_btn':'login:login_btn'} } );return false;" value="Login" style="width:100%;margin-left:7px;" type="button">

我正在尝试简单地单击登录按钮。我的代码在这里:

System.setProperty("webdriver.chrome.driver","C:\\Users\\SmitaThakur\\Downloads\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://myportal-qa.pricechopper.com/mobile/eas/login.seam");
driver.findElement(By.id("login:username")).sendKeys("757823");
driver.findElement(By.id("login:password")).sendKeys("texas5");
driver.findElement(By.id("login:login_btn")).click();

我也尝试了其他点击。 这段代码单击了一下,但没有任何反应。没有出现下一页,也没有出现任何错误。我在其他网站上尝试过相同的代码,但效果很好。同一网站上的相同代码在同一台笔记本电脑上可以正常工作,但以不同的人身份登录。

1 个答案:

答案 0 :(得分:0)

该元素是AJAX元素,因此请确定为 elementToBeClickable 引入 WebDriverwait 所需的元素,并且可以使用以下任一解决方案:< / p>

  • cssSelector

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input[id$='login_btn'][name$='login_btn'][value='Login']"))).click();
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[contains(@id, 'login_btn') and contains(@name, 'login_btn')][@value='Login']"))).click();