GVKun编程网logo

有没有一种方法可以首先在主窗口中搜索网络元素(如果找不到),然后开始在iframe中搜索?

22

此处将为大家介绍关于有没有一种方法可以首先在主窗口中搜索网络元素的详细内容,并且为您解答有关如果找不到,然后开始在iframe中搜索?的相关问题,此外,我们还将为您介绍关于C守护进程–有没有一种方法可

此处将为大家介绍关于有没有一种方法可以首先在主窗口中搜索网络元素的详细内容,并且为您解答有关如果找不到,然后开始在iframe中搜索?的相关问题,此外,我们还将为您介绍关于C守护进程 – 有没有一种方法可以实现?、Java Stream:有没有一种方法可以一次迭代两个元素而不是一个?、php-如果发现错误,有没有一种方法可以不停止脚本?、Win10版系统中搜索框如何禁用网络搜索?的有用信息。

本文目录一览:

有没有一种方法可以首先在主窗口中搜索网络元素(如果找不到),然后开始在iframe中搜索?

有没有一种方法可以首先在主窗口中搜索网络元素(如果找不到),然后开始在iframe中搜索?

要求:默认情况下,在主窗口上搜索网络元素,如果找到则执行操作,否则在iframe中搜索网络元素并执行所需的操作

selenium3.141

''''''WebElement el = driver.findElement(By.xpath("//*[contains(text(),''here'')]"));    boolean displayFlag = el.isDisplayed();    if(displayFlag == true)    {    sysout("element available in main window")      el.click();    }    else     {      for(int f=0;f<10;f++)      {          sysout("element available in frameset")            switchToFrame(frameName[f]);          el.click();          System.out.println("Webelement not displayed");      }    }''''''

我的脚本本身在第一行失败。它正在尝试在主窗口中查找元素,但该元素实际上在iframe中可用。

但要求是先在主窗口中搜索,然后再导航至iframe。如何处理这种用例?

有什么建议会有所帮助吗?谢谢。

答案1

小编典典

是的,如果主窗口中不存在该元素,则可以编写一个循环遍历所有iframe。 Java实现:

 if (driver.findElements(By.xpath("xpath goes here").size()==0){     int size = driver.findElements(By.tagName("iframe")).size();     for(int iFrameCounter=0; iFrameCounter<=size; iFrameCounter++){        driver.switchTo().frame(iFrameCounter);        if (driver.findElements(By.xpath("xpath goes here").size()>0){            System.out.println("found the element in iframe:" + Integer.toString(iFrameCounter));            // perform the actions on element here        }        driver.switchTo().defaultContent();    } }

Python实现

# switching to parent window - added this to make sure always we check on the parent window firstdriver.switch_to.default_content()# check if the elment present in the parent windowif (len(driver.finds_element_by_xpath("xpath goes here"))==0):    # get the number of iframes    iframes = driver.find_elements_by_tag_name("iframe")    # iterate through all iframes to find out which iframe the required element    for iFrameNumber in iframes:        # switching to iframe (based on counter)        driver.switch_to.frame(iFrameNumber+1)        # check if the element present in the iframe        if len(driver.finds_element_by_xpath("xpath goes here")) > 0:            print("found element in iframe :" + str(iFrameNumber+1))            # perform the operation here        driver.switch_to.default_content()

C守护进程 – 有没有一种方法可以实现?

C守护进程 – 有没有一种方法可以实现?

我在C中有一个关于守护进程的普遍问题,我现在还没有看到答案。

有没有办法像一个约定或标准一样实施守护进程的控制?

– 重新进一步解释 –

我已经看到了多个文件,讲授如何在C中创build守护进程的基础知识。分叉,closures文件描述符,更改根目录等等…没有问题。 当进程进入一个无限循环时(当守护进程被创build – 可以这么说),它们全部停止。 但是这只是编码守护进程的一半; 你必须以某种方式控制它。 我可以用不同的方式工作,但我觉得还有更多的东西。

用PHP启动一个守护进程

Linux系统守护进程在Qt中

一种在Linux内部进行应用程序通信的方法

守护进程不停止在Linux中

ubuntu:启动(upstart)mongodb的第二个实例

为此(检查是否有进程正在运行,或者是否停止运行的守护进程,或者…)我已经看到了不同的方法(UNIX套接字,文件锁,pid文件…)以及它们的优点和缺点。 但在我看来,似乎是意见或个人口味。 “你为什么不只是…?” 或者“我已经这样做了,它为我工作”。 而且我不确定这是不是自由的标志。

我的意思是,如果你看看sshd,httpd,syslogd等等,它们都可以通过init-scripts或服务命令(start | stop | status)来控制。 这看起来像一个标准。 但是这只是一些松散的习惯,很多人试图追随,或者在C函数的深海中有某种“框架”? 你是否必须以某种方式使它工作 – 例如让你的程序响应“停止”参数,并以某种方式结束守护进程? 还是有某种标准,惯例,UNIX方式,最佳实践…应该遵循写出“好,干净的代码”,并在大多数环境中很好地集成?

我的主要问题归结为:是否有一种方法是要完成的?

如果是这样,我可以在哪里find更多信息? 我想还有更多需要照顾的,而不仅仅是开始和停止。

如何设置一个PHP守护进程?

将数据写入stderr会使程序在成为守护程序后退出

Linux守护进程vs前台应用程序

修改python守护进程脚本,stop不会返回OK(但会杀死进程)

父进程重启时如何让subprocess死掉

没有标准,但是有一个事实上的标准,正如你已经注意到的那样。

我建议你选择其中的一个例子,比如Apache,然后研究一下apachectl的功能。 你会发现它发送信号到守护进程,基于知道它从文件读取的PID。

在Apache的情况下,信号是有意义的,因为你不希望某种HTTP请求能够停止服务器。 在DBMS的情况下,您可能需要响应传入的命令来停止服务器,只要您先进行身份验证和授权。

您可以使用信号,或者守护进程可以创建一个unix套接字(具有适当的权限)并监听数据。这取决于您需要在程序中执行多少控制。

请记住,对于低流量的事情,可以方便地使用xinetd,让它叉和处理连接,只是响应请求。

Java Stream:有没有一种方法可以一次迭代两个元素而不是一个?

Java Stream:有没有一种方法可以一次迭代两个元素而不是一个?

假设我们有这个流

Stream.of("a", "b", "err1", "c", "d", "err2", "e", "f", "g", "h", "err3", "i", "j");

我想在地图中保存几对相邻的字符串,其中第一个以“ err”开头。

我想到的就是这样

Map<String, String> map = new HashMap<>();Stream.of("a", "b", "err1", "c", "d", "err2", "e", "f", "g", "h", "err3", "i", "j").reduce((acc, next) -> {    if (acc.startsWith("err"))        map.put(acc,next);    if (next.startsWith("err"))        return next;    else        return "";});

但是我对它并不完全满意,主要有两个原因

  1. 我在“滥用” reduce功能。在Stream API中,每个函数都有其明确的定义明确的目的:max应该计算最大值,filter应该根据条件进行过滤,reduce应该产生递增的累加值,依此类推。
  2. 这样做会使我无法使用Streams强大的机制:如果我想将搜索范围限制在前两个结果中,该怎么办?

在这里,我reduce之所以使用它,是因为(据我所知),它是唯一使您可以比较几个值的函数,以某种方式,它们可以返回类似于“当前值”和“下一个值”的概念。

有没有更直接的方法?是什么让您可以在每次迭代中考虑多个值来迭代流?

编辑

我正在考虑的是某种机制,在给定当前元素的情况下,您可以为每次迭代定义要考虑的“元素窗口”。

就像是

<R> Stream<R> mapMoreThanOne(    int elementsBeforeCurrent,    int elementsAfterCurrent,    Function<List<? super T>, ? extends R> mapper);

代替

<R> Stream<R> map(Function<? super T, ? extends R> mapper);

那将是对当前API的强大“升级”。

编辑2

我感谢人们提出他们的解决方案所付出的努力,但问题本身不是算法。通过将流,索引,临时变量放在一起以存储先前的值来实现我的目标,有多种方法…但是我想知道Stream
API中是否有某种方法专门用于处理当前元素以外的任务而不破坏“流范式”。像这样

List<String> list =        Stream.of("a", "b", "err1", "c", "d", "err2", "e", "f", "g", "h", "err3", "i", "j")        .filterFunctionImWonderingIfExist(/*filters couples of elements*/)        .limit(2)        .collect(Collectors.toList());

有了答案,我认为除非使用StreamEx库,否则没有“清晰快捷”的解决方案

答案1

小编典典

您可以Collector为此任务建立自定义。

Map<String, String> map =     Stream.of("a", "b", "err1", "c", "d", "err2", "e", "f", "g", "h", "err3", "i", "j")          .collect(MappingErrors.collector());

与:

private static final class MappingErrors {    private Map<String, String> map = new HashMap<>();    private String first, second;    public void accept(String str) {        first = second;        second = str;        if (first != null && first.startsWith("err")) {            map.put(first, second);        }    }    public MappingErrors combine(MappingErrors other) {        throw new UnsupportedOperationException("Parallel Stream not supported");    }    public Map<String, String> finish() {        return map;    }    public static Collector<String, ?, Map<String, String>> collector() {        return Collector.of(MappingErrors::new, MappingErrors::accept, MappingErrors::combine, MappingErrors::finish);    }}

在此收集器中,保留了两个运行元素。每次String接受a时,它们都会更新,如果第一个以开头"err",则会将这两个元素添加到地图中。


另一个解决方案是使用StreamEx库,该库提供一种pairMap将给定功能应用于此流的每个相邻元素对的方法。在下面的代码中,如果第一个元素以开头"err"null则该操作将返回一个由该对的第一个和第二个元素组成的String数组。null然后将元素过滤掉,并将Stream收集到地图中。

Map<String, String> map =     StreamEx.of("a", "b", "err1", "c", "d", "err2", "e", "f", "g", "h", "err3", "i", "j")            .pairMap((s1, s2) -> s1.startsWith("err") ? new String[] { s1, s2 } : null)            .nonNull()            .toMap(a -> a[0], a -> a[1]);System.out.println(map);

php-如果发现错误,有没有一种方法可以不停止脚本?

php-如果发现错误,有没有一种方法可以不停止脚本?

我有一个PHP脚本,该脚本有时会产生一些不重要的错误,但该脚本停止执行下一行.我想要一些ini_set或其他使它执行所有脚本的方法,即使有警告或错误也是如此.

注意:我无法修复这些错误.

谢谢

解决方法:

如果存在致命错误,脚本将停止运行,无论如何,您将无能为力.您会看到vb中没有类似“错误恢复”这样的内容.您可以使用@字符来抑制错误.

Win10版系统中搜索框如何禁用网络搜索?

Win10版系统中搜索框如何禁用网络搜索?

使用Win10系统的用户都知道有一个搜索框,在这个搜索框内我们可以搜索想要操作的内容,十分的便捷,但是有的用户想要禁用搜索内的网络搜索,那要怎么设置呢,下面教给大家设置的方法,如果不知道怎么设置的用户快来学习下吧。

禁用搜索框网络搜索功能方法:

1、打开注册表并转到如下路径

计算机HKEY_CURRENT_USERSOFTWAREPoliciesMicrosoftwindows;

2、右键点击Windows文件夹选择新建项并将其重命名为Explorer,右键点击Explorer并选择新建DWORD32位值并将其重命名为disableSearchBoxSuggestions;

3、双击刚刚新建的键值将其内容修改为:

1 禁用必应和网络搜索

0 启用必应和网络搜索

4、修改完成后需要重启才可生效。

以前的注册表键值叫做必应搜索启用而现在新增的改成禁用搜索框搜索建议,本质上都是用来禁用网络搜索功能。

以上便是win10 20H1/20H2版系统中搜索框怎样禁用网络搜索的详细方法,不需要这个功能的用户们可以按照上面的方法将其禁用即可。

今天关于有没有一种方法可以首先在主窗口中搜索网络元素如果找不到,然后开始在iframe中搜索?的分享就到这里,希望大家有所收获,若想了解更多关于C守护进程 – 有没有一种方法可以实现?、Java Stream:有没有一种方法可以一次迭代两个元素而不是一个?、php-如果发现错误,有没有一种方法可以不停止脚本?、Win10版系统中搜索框如何禁用网络搜索?等相关知识,可以在本站进行查询。

本文标签: