WebDriver的selenium.focus()
等效什麼?使用Java在Selenium WebDriver中集中元素的正確方法
element.sendKeys("");
或
new Actions(driver).moveToElement(element).perform();
我已經試過他們與他們的工作,但一個總是在所有元素上工作?
哪一個是任何元素(如按鈕,鏈接等)的正確方法?這對我來說很重要,因爲該功能將用於不同的用戶界面。
WebDriver的selenium.focus()
等效什麼?使用Java在Selenium WebDriver中集中元素的正確方法
element.sendKeys("");
或
new Actions(driver).moveToElement(element).perform();
我已經試過他們與他們的工作,但一個總是在所有元素上工作?
哪一個是任何元素(如按鈕,鏈接等)的正確方法?這對我來說很重要,因爲該功能將用於不同的用戶界面。
下面的代碼 -
element.sendKeys("");
試圖找到一個輸入標籤框輸入一些信息,而
new Actions(driver).moveToElement(element).perform();
是比較合適的,因爲它會爲圖像元素的工作,鏈接元素,下拉框等。
因此使用moveToElement()方法更適用於關注網頁上的任何通用WebElement。
對於輸入框,您將必須單擊()上的要關注的元素。
new Actions(driver).moveToElement(element).click().perform();
而鏈接和圖片鼠標將超過特定的元素,你可以根據你想要做什麼決定點擊()就可以了。
如果點擊()上的輸入標籤不起作用 -
既然你要這個功能是通用的,你先檢查webElement是輸入標籤或不 -
if("input".equals(element.getTagName()){
element.sendKeys("");
}
else{
new Actions(driver).moveToElement(element).perform();
}
您可以根據自己的喜好進行類似的更改。
您可以使用JS如下:
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("document.getElementById('elementid').focus();");
FWIW,我有什麼,我認爲是相關問題的和一個解決辦法想出了:我寫了一個Chrome擴展是做了一個document.execCommand(「貼')放到一個textarea中,重點放在窗口卸載上,以便用系統剪貼板內容填充元素。這可以手動完成100%的工作,但execCommand在Selenium下運行時幾乎總是返回false。
我在最初的driver.get(myChromeExtensionURL)之後添加了一個driver.refresh(),現在它在100%的時間內工作。這是在Mac OS 10.9上的Selenium驅動程序版本2.16.333243和Chrome版本43。
當我研究這個問題時,我沒有看到這個解決方法的任何提及,所以我想我會將我的發現記錄在我的Selenium/focus/execCommand('paste')腳步中。
焦點僅集中在窗口的功能。
使用((JavascriptExecutor)webDriver).executeScript("window.focus();");
是肯定的。
它也適用於輸入框嗎? – questions
讓我知道我編輯的答案是否有幫助? –
這應該工作。謝謝哥們! :) – questions