簡體   English   中英

Selenium Web 驅動程序:無法滾動到視圖中

[英]Selenium web driver: cannot be scrolled into view

我在 Eclipse 中使用 Selenium IDE 和 Selenium Web 驅動程序 testng .. 我的測試是針對 ZK 應用程序的 ..

測試用例在 Selenium IDE 上運行良好..

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://*****/>
<title>work it2</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">work it2</td></tr>
</thead><tbody>
<tr>
    <td>open</td>
    <td>/xxx</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>//li[2]/div/div/div/span</td>
    <td></td>
</tr>
<tr>
    <td>pause</td>
    <td>3000</td>
    <td>3000</td>
</tr>
<tr>
    <td>doubleClick</td>
    <td>//div[2]/div[2]</td>
    <td></td>
</tr>
<tr>
    <td>pause</td>
    <td>3000</td>
    <td>3000</td>
</tr>
</tbody></table>
</body>
</html>

但是當我使用 selenium web 驅動程序(testng)在 eclipse 中運行它時,我得到了一個錯誤..

    selenium.open("xxx");
selenium.click("//li[2]/div/div/div/span");
Thread.sleep(3000);
selenium.doubleClick("//div[2]/div[2]");
Thread.sleep(3000);

我也將代碼更改為

 driver.get("xxx");

        driver.findElement(By.xpath("//li[2]/div/div/div/span")).click();
        Thread.sleep(3000);
        WebElement ee = driver.findElement(By.xpath("//div[2]/div[2]"));
        Actions action = new Actions(driver);
        action.doubleClick(ee).perform();
        Thread.sleep(3000);

也得到同樣的錯誤...

錯誤在這一行

//div[2]/div[2]

com.thoughtworks.selenium.SeleniumException:元素內的偏移量無法滾動到視圖中:(87, 118):[object XrayWrapper [object HTMLDivElement]] 命令持續時間或超時:63 毫秒構建信息:版本:'2.39.0',修訂版: 'ff23eac', 時間: '2013-12-16 16:11:15' 系統信息: 主機: 'EnD', ip: '192.168.17.76', os.name: 'Windows 7', os.arch: ' amd64',os.version:'6.1',java.version:'1.7.0_51' 會話 ID:3b79783c-2558-4c87-bd51-a72821696040 驅動程序信息:org.openqa.selenium.firefox.FirefoxplatformDriver Capabilities [ ,acceptSslCerts=true,javascriptEnabled=true,cssSelectorsEnabled=true,databaseEnabled=true,browserName=firefox,handlesAlerts=true,browserConnectionEnabled=true,webStorageEnabled=true,nativeEvents=false,rotatable=false,locationContextEnabled=true,applicationCacheEnabled=true,takesScreenshot =真,版本=27.0.1}]

奈夫,

實際上,您的上述問題與實際問題不同,因此您應該將其作為單獨的問題提出。 不過,我正在回答你之前的問題。

錯誤是因為您嘗試單擊的元素不可見。 在單擊元素之前,它應該是可見的。 您可以通過以下方式做到這一點 -

WebElement element = driver.findElement(By.xpath("//div[2]/div[2]"));
WebDriverWait wait = new WebDriverWait(driver, 20); //here, wait time is 20 seconds

wait.until(ExpectedConditions.visibilityOf(element)); //this will wait for elememt to be visible for 20 seconds
element.click(); //now it clicks on element

如果以上不起作用,您可以通過執行 javascript 來單擊元素(但這不是一個好習慣)

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", element);

嘗試執行腳本並單擊元素

driver.executeScript("arguments[0].click();", element)

我不確定,但請嘗試看看以下是否適合您。 首先,您必須在與其交互之前使該元素可見 -

WebElement element = driver.findElement(By.xpath("//div[2]/div[2]"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);

上面的代碼將向下滾動直到元素可見,然后您可以單擊它。

我在稍微不同的上下文中遇到此錯誤,我嘗試使用 selenium RemoteWebDriver 單擊錨標記(我試圖替換 WebDriver)。 修復是為驅動程序確定正確的功能集,例如:

capability = DesiredCapabilities.chrome(); capability.setPlatform(Platform.WIN10); capability.setCapability("version", "66");

我只是調整了我的瀏覽器尺寸,它的工作原理是這樣的

driver = webdriver.Firefox()
driver.get(SOME_URL)
driver.set_window_position(0, 0)
driver.set_window_size(1024, 768)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM