我正在尝试单击执行以下方法的动态菜单:
public void clicaItemSubMenu(String item) throws InterruptedException{
String link = driver.findElement(By.xpath("//*[contains(text(), '" + item + "')]")).getAttribute("Id");
driver.get("javascript:document.getElementById('" + link + "').click()");
}
代码工作正常,菜单正在打开,之后,Selenium
挂起FireFox或Internet Explorer。如果我调试代码,问题就不会发生。我试图处理一些等待的东西,但没有成功。有人可以帮忙吗?
答案 0 :(得分:0)
实际上WebDriver::get()
用于在当前浏览器窗口中加载新网页。这是使用HTTP
GET
操作完成的,当您想要使用JavaScript
执行点击元素时,该方法将会阻止,直到加载完成。
您应该尝试使用JavascriptExecutor::executeScript()
在当前所选框架或窗口的上下文中执行JavaScript
,如下所示: -
public void clicaItemSubMenu(String item) throws InterruptedException{
WebElement link = driver.findElement(By.xpath("//*[contains(text(), '" + item + "')]"));
((JavascriptExecutor)driver).executeScript("arguments[0].click()", link);
}
注意: - 您可以使用WebElement
方法直接点击link.click()
JavascriptExecutor
,而不使用Spinner keyValueSpinner = (Spinner) rootView.findViewById(R.id.spinner_key_value);
KeyValueArrayAdapter adapter = new KeyValueArrayAdapter(getActivity(),android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.setEntries(getResources().getStringArray(R.array.statusTitle));
adapter.setEntryValues(getResources().getStringArray(R.array.statusId));
keyValueSpinner.setAdapter(adapter)
。