小编Zac*_*ten的帖子

如何使用Selenium WebDriver for python在浏览器上打开一个新窗口?

我正在尝试使用selenium for python在浏览器中打开一个新选项卡或一个新窗口.如果打开新选项卡或新窗口,则重要的是打开浏览器的第二个实例非常重要.

我已经尝试了几种不同的方法,但都没有成功.

  1. 切换到一个不存在的窗口,希望在找不到所述窗口时打开一个新窗口:

    driver.switch_to_window(None)

  2. 通过打开窗口迭代(虽然目前只有一个)

    for handle in driver.window_handles:
        driver.switch_to_window(handle)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 试图模拟键盘按键

    from selenium.webdriver.common.keys import Keys
    driver.send_keys(Keys.CONTROL + 'T')
    
    Run Code Online (Sandbox Code Playgroud)

这一个特别的问题是,它似乎并不能直接发送键浏览器,只有这样的特定元素:

driver.find_element_by_id('elementID').send_keys(Keys.CONTROL + 'T')
Run Code Online (Sandbox Code Playgroud)

但是,当诸如此类的命令被发送到元素时,它似乎什么都不做.我试图在页面上找到最顶层的HTML元素并将密钥发送到该元素,但是再次遇到了失败:

driver.find_element_by_id('wrapper').send_keys(Keys.CONTROL + 'T')
Run Code Online (Sandbox Code Playgroud)

我在网上找到的另一个版本,并且无法验证其有效性或缺乏有效性,因为我不确定需要导入的类/模块

act = ActionChains(driver)
act.key_down(browserKeys.CONTROL)
act.click("").perform()
act.key_up(browserKeys.CONTROL)
Run Code Online (Sandbox Code Playgroud)

与不同语法非常相似的东西(我不确定这些中的一个或两个是否是正确的语法)

actions.key_down(Keys.CONTROL)
element.send_keys('t')
actions.key_up(Keys.CONTROL)
Run Code Online (Sandbox Code Playgroud)

python selenium window selenium-webdriver

15
推荐指数
3
解决办法
7万
查看次数

Textblock.TextTrimming在网格内不起作用

我的布局有一个3列网格,每个网格的宽度都设置为Width="*".对于中间(第二)网格,我有另外3列网格,每个网格包含它自己的文本块,并且列网格宽度再次设置为Width="*".

调整窗口大小时,网格会按预期调整大小,但如果文本超出网格边界,则第3个文本块不会被修剪.我有文本框设置TextTrimming="WordEllipsis"TextWrapping="Wrap",并且由于某种原因没有强制执行属性.

这是我的一些代码:

布局网格:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition MinWidth="150" MaxWidth="300" Width="1*" />
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition MinWidth="150" MaxWidth="500" Width="1*" />
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="2*"/>
    </Grid.ColumnDefinitions>
</Grid>
Run Code Online (Sandbox Code Playgroud)

第二列代码:

<Grid Grid.Column="2" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="5" Width="Auto">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>

    <TextBlock Text="{Binding Path=FeedItems.Count}" Foreground="White" FontSize="18" Width="Auto" FontWeight="SemiBold" />
    <TextBlock Text=" items from " Foreground="White" FontSize="18" Width="Auto" Grid.Column="1" />
    <TextBlock Text="{Binding Path=Name}" Foreground="White" FontSize="18" Grid.Column="2" TextTrimming="CharacterEllipsis" HorizontalAlignment="Left" Width="Auto" TextWrapping="NoWrap" ClipToBounds="True" /> …
Run Code Online (Sandbox Code Playgroud)

wpf grid gridview textblock texttrimming

8
推荐指数
1
解决办法
8722
查看次数

Chromecast 接收器,如何在没有明确投射发送者请求的情况下加载媒体?

媒体存在于我想在我的演员接收器上播放的外部服务器上(Google 的 CastReferencePlayer的修改版本)。接收者与该服务器不断通信(通过长轮询),并在需要播放某个媒体文件时受到服务器的指示。

我遇到的问题是我需要接收器能够基本上“告诉自己”播放这个媒体。这违反了标准的发送方-接收方通信协议,但对于我的应用程序来说是必要的,我认为请求不会太古怪。

据我了解,MediaManager对象会自动接收来自演员表发送者的所有播放媒体请求。我正在寻找一种方法来连接到 MediaManager 并告诉它在没有收到发件人正式请求的情况下播放某些媒体。

尽管进行了大量搜索和阅读文档,但我找不到这样做的方法。有谁知道有什么方法可以做到这一点?

google-cast chromecast

6
推荐指数
1
解决办法
1836
查看次数

:hover 旋转 CSS 保持位置不变

我在悬停时使用 CSS 旋转一个对象,并希望当您取消悬停它时它保持在新位置。我已经四处搜索,但我唯一能找到的是css :hover 旋转元素并保持新的位置,这似乎超出了范围。

这种效果可以纯粹用CSS实现吗?我希望当你停止悬停时图标保持在 180 度位置。

我使用了这段代码:

i.fa.fa-globe:hover { 
    color: #e9204f;
    transition: 0.9s;
    transform: rotatey(180deg);
}
Run Code Online (Sandbox Code Playgroud)

如果这有什么区别的话,它也是一个很棒的字体图标。


编辑 - 为其他需要它的人提供的简单 CSS 解决方案(摘自评论):

.lovernehovermarket i.fa.fa-rocket { 
    transform: rotate(0deg);
    transition: transform 999s;
}
Run Code Online (Sandbox Code Playgroud)

css css-transforms

5
推荐指数
1
解决办法
5685
查看次数

与列表的多态性

我有一个对象的继承结构,有点像下面这样:

public class A { }
public class B : A { }
public class C : B { }
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望能够传递ListA,BC以这样一个方法:

private void Method(List<A> foos) { /* Method Implementation */ }

B toBee = new B();
B notToBee = new B();
List<B> hive = new List<B> { toBee, notToBee };

// Call Method() with a inherited type.  This throws a COMPILER ERROR 
// because although B is an A, a List<B> is …
Run Code Online (Sandbox Code Playgroud)

c# generics polymorphism

4
推荐指数
2
解决办法
2262
查看次数

通用函数将字符串转换为打字稿枚举

我找到有关如何将字符串转换为打字稿枚举的绝佳答案。基于此,我编写了此功能

enum Color { Red='red', Green='green' }

function mapColorString(strColor: string): Color {
  const colorKey = strColor as keyof typeof Color
  return Color[colorKey]
}
Run Code Online (Sandbox Code Playgroud)

但是现在当我尝试使其通用时,

function getEnumFromString<T>(str: string): T {
  const enumKey = str as keyof T
  return T[enumKey]
}
Run Code Online (Sandbox Code Playgroud)

我在return语句中得到错误: 'T' only refers to a type, but is being used as a value here.

我想使它具有通用性,因为我需要根据它们的字符串值生成许多枚举,并且我不想为每个枚举使用单独的方法。

typescript

4
推荐指数
1
解决办法
592
查看次数

C# - 当引用类常量时,为什么执行会流向实例变量?

在下面的代码段中,我FILE_LOCATION从该类外部引用,并且在执行后流入此类以访问该常量,由于某种原因而不是继续返回到进行常量调用的位置,执行继续实例化单例.

我的问题是两部分; 为什么会发生这种情况,我该如何解决呢?我试图创建两个部分类,一个仅用于常量,另一个用于其他所有,但执行仍然继续到另一个部分类来实例化单例.

public sealed class Foo
{  
    public static readonly string FILE_LOCATION = @"path\to\file";

    // (singleton code modeled after:
    // http://csharpindepth.com/articles/general/singleton.aspx --fourth     version)
    private static readonly Foo foo = new Foo();

    // Rest of class implementation...
 }
Run Code Online (Sandbox Code Playgroud)

该属性是在按钮单击时从表单类的实例引用的:

public partial class MyForm : Form
{
    public void button1_Click(object sender, EventArgs e)
    {
        string s = Foo.FILE_LOCATION;
        // this location is only reached AFTER the singleton is instantiated.
    }
}
Run Code Online (Sandbox Code Playgroud)

c# singleton constants sealed partial

3
推荐指数
1
解决办法
92
查看次数