hks*_*233 14 selenium webdriver selenium-webdriver
我使用selenium webdriver 2.210 + JAVA进行测试.我有一个示例代码,用于选择gmail中的所有邮件.但是当我尝试放置5秒延迟时,代码会抛出"元素当前不可见,因此可能无法与之交互"错误通过webdriver获取URL后,是否有可能使此代码与延迟一起工作?
driver.get("https://mail.google.com/mail/u/0/?shva=1#all");
delay(5); ////*......Working fine without this...........*////
driver.switchTo().frame(driver.findElement(By.id("canvas_frame")));
driver.findElement(By.xpath("//div[@class = 'T-Jo-auh']")).click();
Run Code Online (Sandbox Code Playgroud)
提前致谢
Kes*_*sty 18
你确定你在看正确的元素吗?我遇到了类似的问题,结果发现页面上有两个相似的元素,一个是可见的,另一个不是.FindElement函数返回了一个不可见的函数.
我通过使用FindElements而不是FindElement解决了这个问题,然后使用Linq提取了一个可见的.
以下是您可以采取的解决问题的摘要(Protractor/Javascript中的示例):
最大化浏览器窗口(在Chrome + Mac上,目前您必须采用不同的方式):
browser.driver.manage().window().maximize();
Run Code Online (Sandbox Code Playgroud)验证没有与定位器匹配的其他元素.如果存在另一个与实际上不可见的定位器匹配的元素,则可能会出现此错误.
等待元素可点击:
var EC = protractor.ExpectedConditions,
elm = element(by.id("myid"));
browser.wait(EC.elementToBeClickable(elm), 5000);
Run Code Online (Sandbox Code Playgroud)var elm = element(by.id("myid"));
browser.executeScript("arguments[0].scrollIntoView();", elm);
Run Code Online (Sandbox Code Playgroud)点击通过javascript:
var elm = element(by.id("myid"));
browser.executeScript("arguments[0].click();", elm);
Run Code Online (Sandbox Code Playgroud)移动到元素并通过"浏览器操作"单击:
var elm = element(by.id("myid"));
browser.actions()
.mouseMove(elm)
.click()
.perform();
Run Code Online (Sandbox Code Playgroud)小智 1
我不确定,但每个 watir-webdriver 元素都有 - (Object) wait_until_present(timeout = 30) 方法。
如果此步骤是可选的,您应该检查可见性:
element = driver.findElement(By.xpath("//div[@class = 'T-Jo-auh']"));
if (element.isDisplayed()) {
element.click();
}
Run Code Online (Sandbox Code Playgroud)
请注意,我不是 Java 专家,上面的代码未经测试。试一试。
| 归档时间: |
|
| 查看次数: |
60415 次 |
| 最近记录: |