我正在尝试创建跨浏览器Python-Selenium
测试脚本。因此,无论我使用哪webdriver
(Chrome
或IE
},我都要求所有结果都相同。
我可以设置浏览器窗口大小如下:
driver.set_window_size(1920, 1080)
但是,以下代码将返回Chrome
和IE
的不同值:
element = driver.find_element_by_xpath('some_xpath')
element.location
作为视口区域(显示网页内容)大小不同(Chrome
- 1910x998,IE
- 1904x965)尽管窗口大小相同。要获得这些值,我使用了
driver.execute_script('return document.documentElement.clientHeight')
driver.execute_script('return document.documentElement.clientWidth')
所以我试过
driver.execute_script('document.documentElement.clientHeight = "990px";')
driver.execute_script('document.documentElement.clientWeight = "1900px";')
但没有运气
所以问题是如何在selenium
中设置浏览器视口大小?
答案 0 :(得分:6)
以下是设置视口大小的功能:
def set_viewport_size(driver, width, height):
window_size = driver.execute_script("""
return [window.outerWidth - window.innerWidth + arguments[0],
window.outerHeight - window.innerHeight + arguments[1]];
""", width, height)
driver.set_window_size(*window_size)
用法:
from selenium import webdriver
driver = webdriver.Chrome()
# set the viewport size to 800 x 600
set_viewport_size(driver, 800, 600)
# display the viewport size
print driver.execute_script("return [window.innerWidth, window.innerHeight];")
答案 1 :(得分:0)
我正在使用它:
<div id="banner<?php echo $module; ?>" class="owl-carousel">
<?php //foreach ($banners as $banner) {
foreach ($banners as $i => $banner) {
?>
<div class="item">
<?php if ($banner['link']) {
if ( $i == 1 ) {
echo 'YOUR HTML CONTAINING SOME TEXT HERE';
}
?>
<a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /></a>
<?php } else { ?>
<img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" />
<?php } ?>
</div>
<?php } ?>
</div>
其中1900是宽度,990是高度。
答案 2 :(得分:0)
这是@Florent B的 Java 版本。答案:
int width = "500";
int height = "500";
//Remove the window from fullscreen (optional), if it s in fullscreen the outerHeight is not accurate
browser.manage().window().setSize(new Dimension(800,800));
JavascriptExecutor js= (JavascriptExecutor)browser;
String windowSize = js.executeScript("return (window.outerWidth - window.innerWidth + "+width+") + ',' + (window.outerHeight - window.innerHeight + "+height+"); ").toString();
//Get the values
width = Integer.parseInt(windowSize.split(",")[0]);
height = Integer.parseInt(windowSize.split(",")[1]);
//Set the window
browser.manage().window().setSize(new Dimension(width, height));
答案 3 :(得分:0)
这是@Florent B 的 C# 版本。答案:
public static void SetViewportSize(RemoteWebDriver driver, int width, int height)
{
var jsGetPadding = @"return [ window.outerWidth - window.innerWidth,window.outerHeight - window.innerHeight ];";
var paddingArray = driver.ExecuteScript(jsGetPadding) as ReadOnlyCollection<object>;
driver.Manage().Window.Size = new Size(width + int.Parse(paddingArray[0].ToString()), height + int.Parse(paddingArray[1].ToString()));
}
用法:
RemoteWebDriver driver = new EdgeDriver();
SetViewportSize(driver,800, 800);