带有IE驱动程序的按钮和带有Java的Xpath Selenium的问题

问题描述 投票:0回答:2

我有以下问题:

我在表单内有一个按钮(网页上有一个登录名和密码文本框和一个按钮),此按钮调用js函数,并在登录名和密码验证后调用主网页。 html代码是这样的(此代码在一个名为“ login”且方法= POST的表单中):

<INPUT class="btn btn-mini btn-primary" onclick=submitForm(); type=button value="Sign On">

在Selenium中,我尝试使用以下语句,但未成功:

driver.findElement(By.xpath("//input[@type='button']")).click();
driver.findElement(By.cssSelector("input[type='button'][@value='Sign On']")).click();
driver.findElement(By.xpath("//input[@value='Sign On']")).click();

当我运行脚本时,登录名和密码文本正确填写,但是单击按钮无效。

您能帮我吗?

谢谢!

来自智利的贡萨洛

java selenium button xpath click
2个回答
0
投票

要单击该元素,您需要为element_to_be_clickable()引入WebDriverWait,并且可以使用以下任一[

  • cssSelector

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.btn.btn-mini.btn-primary[value='Sign On'][onclick^='submitForm']"))).click();

  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='btn btn-mini btn-primary' and @value='Sign On'][starts-with(@onclick, 'submitForm')]"))).click();


  • 0
    投票
    我找到了解决方案,阅读了许多与此相关的问题。我正在使用Win 10和IE 11,因此Selenium遇到了问题,因为文本,应用程序和其他项目的大小需要100%。就我而言,我的配置为150%。解决此问题后,我再次运行该脚本,它可以工作。

    使用的代码是:

    WebElement button = null; List<WebElement> inputs = webDriver.findElements(By.tagName("input")); for (WebElement input : inputs) { if (input.getAttribute("value").equals("Log In")) { button = input; break; } } if (button == null) { System.err.println("Cannot find button!"); } else { System.out.println("Clicking button now!"); button.click(); }

    此后,我检查另一个更有效的代码:

    driver.findElement(By.cssSelector("input[type='button'][value='Sign On']")).click();

    这也可以。

    感谢大家的帮助

    © www.soinside.com 2019 - 2024. All rights reserved.