【问题标题】:Activate javascript on Webdriver selenium在 Webdriver selenium 上激活 javascript
【发布时间】:2014-10-14 04:13:59
【问题描述】:

我有 Java 程序,我使用 Selenium WebDriver。 但是我的脚本没有看到“打开设备访问”按钮,因为它是“显示:无”。

http://clip2net.com/s/53N136

通常,当我单击“设备访问”时,会出现带有 JavaScript 的“打开访问设备”按钮。 我的 Firefox WebDriver 似乎不支持 JavaScript,如何操作?

driver.get(baseUrl);
driver.findElement(By.id("username")).clear();
driver.findElement(By.id("username")).sendKeys("admin");
driver.findElement(By.id("password")).clear();
driver.findElement(By.id("password")).sendKeys("XXX");
driver.findElement(By.name("btnlogin")).click();
Thread.sleep(5000);
driver.findElement(By.xpath("//a[@href='/mybox/devices/overview.php']")).click();
Thread.sleep(5000);
driver.findElement(By.xpath("//a[@href='/mybox/devices/satellite.php']")).click();
Thread.sleep(5000);
WebElement element = driver.findElement(By.xpath("//input[@value='Open device access']"));
System.out.println("Element display (Avant accordéon): "+element.isDisplayed()+"");
driver.findElement(By.id("device_hmi_content_22")).click();
WebElement element2 = driver.findElement(By.xpath("//input[@value='Open device access']"));
System.out.println("Element display (open): "+element2.isDisplayed()+"");

if (isElementPresent(By.xpath("//input[@value='Close device access']")) ) {
    driver.findElement(By.xpath("//input[@value='Close device access']")).click();
    driver.findElement(By.xpath("//input[@value='Open device access']")).click();
    Thread.sleep(5000);
    assertTrue(isElementPresent(By.xpath("/html/body/div[2]/div[3]/div[3]/div[2]/div/div[2]/div[2]/div/div[6]/div/div/div/p/span")));
    assertTrue(isElementPresent(By.xpath("/html/body/div[2]/div[3]/div[3]/div[2]/div/div[2]/div[2]/div/div[6]/div/div/div[2]/input")));
    assertTrue(isElementPresent(By.xpath("/html/body/div[2]/div[3]/div[3]/div[2]/div/div[2]/div[2]/div/div[6]/div/div/div[2]/input[2]")));
    Thread.sleep(3000);
    driver.findElement(By.xpath("//input[@value='Close device access']")).click();
    Thread.sleep(5000);
} else {
    // driver.findElement(By.xpath("//input[@value='Open device access']")).click();
    // Thread.sleep(5000);
    // assertTrue(isElementPresent(By.xpath("/html/body/div[2]/div[3]/div[3]/div[2]/div/div[2]/div[2]/div/div[6]/div/div/div/p/span")));                        
    // assertTrue(isElementPresent(By.xpath("/html/body/div[2]/div[3]/div[3]/div[2]/div/div[2]/div[2]/div/div[6]/div/div/div[2]/input")));                      
    // assertTrue(isElementPresent(By.xpath("/html/body/div[2]/div[3]/div[3]/div[2]/div/div[2]/div[2]/div/div[6]/div/div/div[2]/input[2]")));                       
    // Thread.sleep(3000);
    // driver.findElement(By.xpath("//input[@value='Close device access']")).click();
    // Thread.sleep(5000);
}

我不想使用 javascript 编程,但我想在我的 Firefox WebDriver 上激活 JavaScript。

按钮不可见:

<div id="device_hmi_content_22"> <
div id="accordion_device_hmi_22" class="accordion"> 
<h2 class="accHeadline accHeadlineClosed">Device Access</h2> 
<div class="accContent accContentClosed "> 
<div class="submit">
 <input type="button" onclick="onOpenSessionClick()" value="Open device access"> 
</div>
 </div>
</div>

“打开设备访问”按钮“不可见”,怎么才能点击呢?如何让它可见?

感谢您的帮助。

【问题讨论】:

  • 屏幕截图对 Selenium/WebDriver 问题没有帮助。您应该在问题中包含 HTML。
  • 运行代码时会发生什么?
  • 当我在本地执行我的代码时,这很好,但是使用服务器我的测试失败了,因为“元素不可见”

    设备访问

  • 编辑代码后,我很确定问题可能根本不是 JavaScript。您有严重的问题,请尝试制作一些更精确的 xpath 或 css 选择器。
  • 另外,那些 sleeps() 并不能保证你的元素已经准备好被点击,更不用说浪费时间了。如果通过 if,运行一小部分代码需要大约 30 秒。有了这些时间,您最好自己进行测试。

标签: java javascript selenium webdriver squash


【解决方案1】:

Javascript 与 Selenium WebDrivers 一起开箱即用,包括 Firefox 驱动程序。问题不在于 javascript 没有运行。如果您想确认这一点,只需在长时间睡眠期间打开控制台并运行alert();。或者,为了消除所有疑问,请在您的测试中运行:

driver.get(baseUrl);
driver.execute('alert();');

您应该会看到标准浏览器警报,表明 javascript 确实工作正常,而您的问题源于其他地方。

我个人遇到过点击元素被其上方的元素“窃取”的问题,如果您有固定位置的元素,通常会发生这种情况。如果您认为这可能是个问题,请考虑将 elementScrollBehavior 设置为 1。

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签