小编Sai*_*aVA的帖子

DBIx :: Class - 使用prefetch获取用作条件的所有关系?

这里有三个表:product,modelproduct_modelN:M关系中的产品和模型.

product          product_model            model

id name          product_id model_id      id name
------------     -------------------      ----------
p1 Product 1     p1         m1            m1 Model 1
p2 Product 2     p2         m1            m2 Model 2
...              p2         m2
Run Code Online (Sandbox Code Playgroud)

我想做什么:找到所有支持Model 2的产品(例如product 2).然后,对于每个产品,显示产品支持的model_ids列表(product 2=> [ m1,m2])

这是我的第一次尝试.我需要N个查询来搜索model_id每个产品.

# 1 query for searching products
my @products = $schema->resultset('Product')->search(
   { 'product_models.model_id' => 'm2' },
   { 'join' => 'product_model' },
)
# N queries for searching …
Run Code Online (Sandbox Code Playgroud)

perl join prefetch dbix-class

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

如何使用selenium webdriver在perl的警报/提示/对话框中获取文本?

我想在下面的图片中找到一个字符串.它位于警报,提示或对话框内.我的代码是用Perl编写的,我使用Selenium Webdriver来浏览页面.

图像显示警报和我想要的Url

到目前为止我取得的成就:

  • 找到与selenium的链接并单击它
  • 等待警报出现
  • 从警报中获取字符串,但不从文本字段中获取字符串

my $copy_elem = wait_until {      
    $d->find_element_by_id('clipboard-link'); 
};        
$copy_elem->click;

select undef, undef, undef, 8.00;

my $alert = wait_until {
  $d->get_alert_text;
};
Run Code Online (Sandbox Code Playgroud)

$alert 输出是"复制链接"

所以我想要的文本在alert的文本字段中.使用get_alert_text我只获取Alert字符串,但不获取文本字段内容.我在网上搜索了答案,看到人们使用窗口句柄切换到警报.我试图在Selenium Webdriver的文档中寻找类似的功能:

CPAN Selenium Webdriver Docu功能列表

我尝试获取窗口句柄并将它们加载到一个数组中,但它没有获得警报的第二个窗口句柄.get_current_window_handle也不起作用.我使用phantomjs和chrome作为浏览器.据我所知driver.switchto().alert();,perl 是没有的.

perl selenium alert phantomjs selenium-webdriver

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