Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium:如何单击javascript按钮_Javascript_Java_Selenium_Selenium Webdriver_Webdriver - Fatal编程技术网

Selenium:如何单击javascript按钮

Selenium:如何单击javascript按钮,javascript,java,selenium,selenium-webdriver,webdriver,Javascript,Java,Selenium,Selenium Webdriver,Webdriver,我必须为自动测试编写一些脚本,以检查内置于flex/amf技术的web应用程序的加载时间。 测试将包括打开IE浏览器,浏览几个选项卡,测量从单击最后一个选项卡加载页面内容到关闭浏览器的时间 我用java编写了一个带有SeleniumWeb驱动程序和Junit的小脚本。脚本打开IE窗口,输入登录名和密码。我对“点击”登录按钮有问题 首先,我尝试通过findingElement和by.partiallinktext查找并单击按钮,但selenium通知我:“无法找到包含部分链接文本的元素”(ctrl

我必须为自动测试编写一些脚本,以检查内置于flex/amf技术的web应用程序的加载时间。 测试将包括打开IE浏览器,浏览几个选项卡,测量从单击最后一个选项卡加载页面内容到关闭浏览器的时间

我用java编写了一个带有SeleniumWeb驱动程序和Junit的小脚本。脚本打开IE窗口,输入登录名和密码。我对“点击”登录按钮有问题

首先,我尝试通过findingElement和by.partiallinktext查找并单击按钮,但selenium通知我:“无法找到包含部分链接文本的元素”(ctrl+f在该站点上工作正常)

我试着用moveByOffset鼠标点击,并按下按钮(用密码填充字符串后,类机器人-‘tab’和‘enter’)。它们都不起作用

接下来我发现了JavascriptExecutor-I,它可以解决我的问题,但我应该如何使用这个类呢

该站点上的按钮:

<button style="width: 120px;" onclick="javascript:logIn();"> Login </button>

我对测试没有太多经验,因此我将非常感谢您的帮助。

不要使用JavaScript。试试这个:

String xPath = "//button[contains(.,'Login')]";
driver.findElement(By.xpath(xPath))).click();
更好,但未经测试:

// xPath to find a button whose text() (ie title) contains the word Login
String xPath = "//button[contains(text(),'Login')]";
driver.findElement(By.xpath(xPath))).click();

还请注意,根据您共享的HTML,在所需元素上调用
click()
,您可以使用以下解决方案:

driver.findElement(By.xpath("//button[normalize-space()='Login']")).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[normalize-space()='Login']"))).click();
从另一个角度来看,所需的元素看起来启用了JavaScript,在这种情况下,您必须诱导WebDriverWait使该元素可单击,并且您可以使用以下解决方案:

driver.findElement(By.xpath("//button[normalize-space()='Login']")).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[normalize-space()='Login']"))).click();