Rip*_*sim 34 javascript java click button selenium-webdriver
我有以下HTML:
<button name="btnG" class="gbqfb" aria-label="Google Search" id="gbqfb"><span class="gbqfi"></span></button>
Run Code Online (Sandbox Code Playgroud)
我在下面的单击"Google搜索"按钮的代码在WebDriver中使用Java工作得很好.
driver.findElement(By.id("gbqfb")).click();
Run Code Online (Sandbox Code Playgroud)
我想在WebDriver中使用JavaScript来单击按钮.我该怎么做?
Jim*_*ans 89
通过JavaScript执行点击有一些您应该注意的行为.例如,如果绑定到onclick元素事件的代码调用window.alert(),您可能会发现您的Selenium代码挂起,具体取决于浏览器驱动程序的实现.也就是说,您可以使用JavascriptExecutor该类来执行此操作.我的解决方案与其他提议的解决方案不同,因为您仍然可以使用WebDriver方法来定位元素.
// Assume driver is a valid WebDriver instance that
// has been properly instantiated elsewhere.
WebElement element = driver.findElement(By.id("gbqfd"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
Run Code Online (Sandbox Code Playgroud)
您还应该注意,最好使用接口click()方法WebElement,但在实例化驱动程序之前禁用本机事件.这将实现相同的目标(具有相同的潜在限制),但不会强迫您编写和维护自己的JavaScript.
以下是使用JavaScript单击WebDriver中的按钮的代码:
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.getElementById('gbqfb').click();");
Run Code Online (Sandbox Code Playgroud)
我知道这不是 JavaScript,但您也可以实际使用鼠标单击来单击动态 Javascript 锚点:
public static void mouseClickByLocator( String cssLocator ) {
String locator = cssLocator;
WebElement el = driver.findElement( By.cssSelector( locator ) );
Actions builder = new Actions(driver);
builder.moveToElement( el ).click( el );
builder.perform();
}
Run Code Online (Sandbox Code Playgroud)
小智 5
不确定 OP 的答案是否真的得到了回答。
var driver = new webdriver.Builder().usingServer('serverAddress').withCapabilities({'browserName': 'firefox'}).build();
driver.get('http://www.google.com');
driver.findElement(webdriver.By.id('gbqfb')).click();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
301249 次 |
| 最近记录: |