我有以下HTML:
<button name="btnG" class="gbqfb" aria-label="Google Search" id="gbqfb"><span class="gbqfi"></span></button>
我,请点击“谷歌搜索”按钮下面的代码工作良好的webdriver的使用Java。
driver.findElement(By.id("gbqfb")).click();
我想使用的JavaScript与webdriver的点击按钮。 我该怎么做?
Answer 1:
执行通过JavaScript点击有一些行为,其中你应该知道。 如果,例如,绑定到代码onclick
你的元素的情况下调用window.alert()
你会发现你的代码硒挂,这取决于浏览器驱动器的实现。 这就是说,你可以使用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);
你还应该注意的是,你可能会更好用click()
的方法WebElement
接口,但禁用本地事件实例化您的驱动程序之前。 这将完成相同的目标(与同潜在的限制),但不能强迫你编写和维护自己的JavaScript。
Answer 2:
下面是一个使用JavaScript来点击的webdriver按钮的代码:
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.getElementById('gbqfb').click();");
Answer 3:
我知道这是不是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();
}
Answer 4:
不知道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();
Answer 5:
不能使用webdriver的做在JavaScript中,作为webdriver的是一个Java工具。 但是,您可以使用的webdriver从Java执行JavaScript,你可以调用点击一个特定的按钮一些JavaScript代码。
WebDriver driver; // Assigned elsewhere
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.document.getElementById('gbqfb').click()");
Answer 6:
此代码将在执行点击操作WebElement
“我们”后的100毫秒:
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("var elem=arguments[0]; setTimeout(function() {elem.click();}, 100)", we);
Answer 7:
与XPath:检查目标页面上的元素,复制XPath和使用下面的脚本:为我工作。
WebElement nameInputField = driver.findElement(By.xpath("html/body/div[6]/div[1]/div[3]/div/div/div[1]/div[3]/ul/li[4]/a"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", nameInputField);
Answer 8:
跨浏览器测试Java脚本
public class MultipleBrowser {
public WebDriver driver= null;
String browser="mozilla";
String url="https://www.omnicard.com";
@BeforeMethod
public void LaunchBrowser() {
if(browser.equalsIgnoreCase("mozilla"))
driver= new FirefoxDriver();
else if(browser.equalsIgnoreCase("safari"))
driver= new SafariDriver();
else if(browser.equalsIgnoreCase("chrome"))
//System.setProperty("webdriver.chrome.driver","/Users/mhossain/Desktop/chromedriver");
driver= new ChromeDriver();
driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
driver.navigate().to(url);
}
}
但是当你希望运行Firefox,你必须将Chrome路径禁用,否则浏览器将启动,但应用程序可能不会。(尝试这两种方式)。
文章来源: How to click an element in Selenium WebDriver using JavaScript