在使用Selenium进行测试时,如何在Chrome和Firefox中调整窗口大小? [英] How do I resize the window in Chrome and Firefox when testing with Selenium?

查看:1734
本文介绍了在使用Selenium进行测试时,如何在Chrome和Firefox中调整窗口大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们为Chrome,Firefox和Safari创建了扩展,并且希望使用Selenium测试我们的扩展。我们有一台Ubuntu服务器,我安装了Firefox和Chrome(使用ChromeDriver)。测试工作正常,但问题在于Chrome窗口太小,并且由于窗口的大小,许多测试在Chrome中失败。使用Firefox,窗口很好,测试不会失败。我如何让窗口更大?我们希望窗口大小为1920x1080。以下是我们的代码:

run_daily_selenium_tests.sh

 #!/ bin / bash 

cd / home / ubuntu / selenium_tests

sudo Xvfb:99 -ac -screen 0 1920x1080x24> / dev / null 2& 1&
export DISPLAY =:99

today_date_hour =`TZ ='Asia / Tel_Aviv'date +%Y-%m-%d_%H`
start_hour =`TZ ='Asia / Tel_Aviv'date +%H`
selenium_test_prefix =/ home / ubuntu / selenium_tests / tests /
selenium_test_suffix =。py
log_prefix =/ home / ubuntu / logs / selenium_tests /

run_selenium_test()
{
selenium_test_file_name =$ {selenium_test_prefix} $ {file_name} $ {selenium_test_suffix}
log_suffix = _ $ {file_name} .log
log_file_name =$ {log_prefix} $ {today_date_hour} $ {log_suffix}
python$ selenium_test_file_name>$ log_file_name2& 1
cat$ log_file_name| mail -s$ test_name - `TZ ='Asia / Tel_Aviv'date +%Y-%m-%d%H:%M:%S`< my_email_address>
}

file_name =chrome_inbox_without_extension_test
test_name =没有扩展测试的Chrome收件箱
run_selenium_test

file_name =chrome_inbox_1_with_extension_test
test_name =带有扩展测试的Chrome收件箱1
run_selenium_test
$ b .....

sudo killall Xvfb> / dev / null 2> & 1

if [$ start_hour =08];然后
cd / home / ubuntu
/home/ubuntu/scripts/send_daily_report_html.sh
fi

硒测试代码

  def get_default_caps(self):
caps = {}
caps ['name'] ='Base Selenium Test'
caps ['build'] ='1.0.1'
if(self.browser == chrome):
self.browser_version = '41 .0.2272.118'
caps ['browser'] ='Chrome'
elif(self.browser ==firefox):
self.browser_version = '37 .0.1'
caps ['browser'] ='Firefox'
elif(self.browser ==safari):
caps ['browser' ] ='Safari'
caps ['os'] ='OS X'
self.browser_version ={} .0.format(randint(7,8))
if( self.browser_version ==7.0):
caps ['os_version'] ='Mavericks'
elif(self.browser_version ==8.0):
caps ['os _version''='Yosemite'
caps ['browser_version'] = self.browser_version
caps ['resolution'] ='1920x1080'
caps ['browserstack.debug'] ='true '
返回上限

def start_selenium_webdriver(self,caps,chrome_options = None,firefox_profile = None):
print(Starting test \{} \with { } {},resolution {}。。format(caps ['name'],caps ['browser'],caps ['browser_version'],caps ['resolution']))
if(self.browser ==chrome):
self.driver = webdriver.Chrome(chrome_options = chrome_options)
elif(self.browser ==firefox):
self.driver = webdriver.Firefox (firefox_profile = firefox_profile)
else:
self.driver = webdriver.Remote(
command_executor ='http:// username:password@hub.browserstack.com:80 / wd / hub' ,
desired_capabilities =上限

self.driver.implicitly_wait(time_to_wait = 5)
se lf.driver.maximize_window()

Firefox窗口:
Chrome窗口:



解决方案

我删除了 .driver.maximize_window(),而是添加了以下几行:

  self.driver.set_window_size (1920,1080)
size = self.driver.get_window_size()
print(Window size:width = {} px,height = {} px。。format(size [width] ,size [height]))

结果使用Chrome: Window size:width = 1919px,height = 1079px。



使用Firefox:窗口大小:width = 1920px,height = 1080px。



现在。

解决方案

对于Chromejust,在webdriver.Chromeinit之前添加:

  chrome_options.add_argument( -  window-size = 1920x1080)

对于所有浏览器:

有一个官方的selenium python绑定为:
http:// selenium.googlecode.com/git/docs/api/py/webdriver_remote/selenium.webdriver.remote.webdriver.html#selenium.webdriver.remote.webdriver.WebDriver.set_window_size

  driver.set_window_size(1920,1080)

  driver.maximize_window()

或带有javascript

  driver.execute_script(window.resizeTo(1920,1080 ))


We created extensions for Chrome, Firefox and Safari and we want to test our extensions with Selenium. We have an Ubuntu server and I installed Firefox and Chrome in it (with ChromeDriver). The tests work, but the problem is that the Chrome window is too small, and many tests fail in Chrome because of the size of the window. With Firefox the window is fine and the tests don't fail. How do I make the window size bigger? We want the window size to be 1920x1080. Here is our code:

run_daily_selenium_tests.sh:

#!/bin/bash

cd /home/ubuntu/selenium_tests

sudo Xvfb :99 -ac -screen 0 1920x1080x24 >/dev/null 2>&1 &
export DISPLAY=:99

today_date_hour=`TZ='Asia/Tel_Aviv' date +"%Y-%m-%d_%H"`
start_hour=`TZ='Asia/Tel_Aviv' date +"%H"`
selenium_test_prefix="/home/ubuntu/selenium_tests/tests/"
selenium_test_suffix=".py"
log_prefix="/home/ubuntu/logs/selenium_tests/"

run_selenium_test()
{
    selenium_test_file_name="${selenium_test_prefix}${file_name}${selenium_test_suffix}"
    log_suffix="_${file_name}.log"
    log_file_name="${log_prefix}${today_date_hour}${log_suffix}"
    python "$selenium_test_file_name" >"$log_file_name" 2>&1
    cat "$log_file_name" | mail -s "$test_name - `TZ='Asia/Tel_Aviv' date +"%Y-%m-%d %H:%M:%S"`" <my_email_address>
}

file_name="chrome_inbox_without_extension_test"
test_name="Chrome Inbox Without Extension Test"
run_selenium_test

file_name="chrome_inbox_1_with_extension_test"
test_name="Chrome Inbox 1 With Extension Test"
run_selenium_test

.....

sudo killall Xvfb >/dev/null 2>&1

if [ $start_hour = "08" ]; then
    cd /home/ubuntu
    /home/ubuntu/scripts/send_daily_report_html.sh
fi

Selenium tests code:

def get_default_caps(self):
    caps = {}
    caps['name'] = 'Base Selenium Test'
    caps['build'] = '1.0.1'
    if (self.browser == "chrome"):
        self.browser_version = '41.0.2272.118'
        caps['browser'] = 'Chrome'
    elif (self.browser == "firefox"):
        self.browser_version = '37.0.1'
        caps['browser'] = 'Firefox'
    elif (self.browser == "safari"):
        caps['browser'] = 'Safari'
        caps['os'] = 'OS X'
        self.browser_version = "{}.0".format(randint(7, 8))
        if (self.browser_version == "7.0"):
            caps['os_version'] = 'Mavericks'
        elif (self.browser_version == "8.0"):
            caps['os_version'] = 'Yosemite'
    caps['browser_version'] = self.browser_version
    caps['resolution'] = '1920x1080'
    caps['browserstack.debug'] = 'true'
    return caps

def start_selenium_webdriver(self, caps, chrome_options=None, firefox_profile=None):
    print("Starting test \"{}\" with {} {}, resolution {}.".format(caps['name'], caps['browser'], caps['browser_version'], caps['resolution']))
    if (self.browser == "chrome"):
        self.driver = webdriver.Chrome(chrome_options=chrome_options)
    elif (self.browser == "firefox"):
        self.driver = webdriver.Firefox(firefox_profile=firefox_profile)
    else:
        self.driver = webdriver.Remote(
            command_executor='http://username:password@hub.browserstack.com:80/wd/hub',
            desired_capabilities=caps
        )
    self.driver.implicitly_wait(time_to_wait=5)
    self.driver.maximize_window()

Firefox window: Chrome window:

Solution:

I removed self.driver.maximize_window() and instead I added the following lines:

    self.driver.set_window_size(1920, 1080)
    size = self.driver.get_window_size()
    print("Window size: width = {}px, height = {}px.".format(size["width"], size["height"]))

The results:

With Chrome: Window size: width = 1919px, height = 1079px.

With Firefox: Window size: width = 1920px, height = 1080px.

The tests pass now.

解决方案

For Chromejust add before "webdriver.Chrome" init:

chrome_options.add_argument("--window-size=1920x1080")

For all browsers:

There is an official selenium python binding for that: http://selenium.googlecode.com/git/docs/api/py/webdriver_remote/selenium.webdriver.remote.webdriver.html#selenium.webdriver.remote.webdriver.WebDriver.set_window_size

driver.set_window_size(1920, 1080)

or

driver.maximize_window()

or with javascript

driver.execute_script("window.resizeTo(1920,1080)")

这篇关于在使用Selenium进行测试时,如何在Chrome和Firefox中调整窗口大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆