简体   繁体   English

在Webdriver Selenium上激活JavaScript

[英]Activate javascript on Webdriver selenium

I have program with Java and I use Selenium WebDriver. 我有使用Java编写的程序,并且使用了Selenium WebDriver。 But my script doesn't see the button "Open device access" because it is "display : none". 但是我的脚本没有看到“打开设备访问”按钮,因为它是“显示:无”。

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

Normally, when I click on "Device Access", the "Open Access device" button appears with the JavaScript. 通常,当我单击“设备访问”时,JavaScript将显示“打开访问设备”按钮。 My Firefox WebDriver does not seem to support JavaScript, how can I operate it? 我的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);
}

I don't want to program with javascript but I want to activate JavaScript on my Firefox WebDriver. 我不想使用javascript编程,但是我想在Firefox WebDriver上激活JavaScript。

The button is not visible: 该按钮不可见:

<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>

The button "open device access" is "not visible", so how can I click on it? “打开设备访问”按钮“不可见”,那么如何单击它? How can I make it visible? 如何使其可见?

Thanks for your help. 谢谢你的帮助。

Javascript works out-of-the-box with Selenium WebDrivers, includeing the Firefox driver. Javascript可与Selenium WebDrivers一起使用,包括Firefox驱动程序。 The issue is not that javascript is not running. 问题不是javascript没有运行。 If you want to confirm this just open the console during a long sleep and run alert(); 如果要确认这一点,请在长时间睡眠后打开控制台并运行alert(); . Or, to dash away all doubts run this in your test: 或者,为了消除所有疑问,请在测试中运行此命令:

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

You should see the standard browser alert indicating that javascript is indeed working properly and your issue is stemming from somewhere else. 您应该看到标准的浏览器警报,指示javascript确实正常运行,并且问题出在其他地方。

I've personally had issues where a click into an element is "stolen" by an element above it, often this can happen if you have fixed-position elements. 我个人遇到过这样的问题:单击某个元素会被其上方的元素“窃取”,如果您使用固定位置的元素,则经常会发生这种情况。 If you think this could be an issue, look into setting elementScrollBehavior to 1. 如果您认为这可能是个问题,请考虑将elementScrollBehavior设置为1。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM