当前位置: 首页 > 知识库问答 >
问题:

编码的UI和Selenium-执行速度取决于鼠标指针的位置

融烨磊
2023-03-14

有趣的地方就在这里。我根据我在StreamReader中打开的文件迭代列表。

看起来像是:

list = driver.FindElement(By.CSSSelector("dropdown-menu"));
list_items = list.FindElements(By.CSSSelector("LI > A"));

int row = 0;
while (data_file.read())
{
  iWebElement item = list_items[row];
  string label = item.text;
  string url = item.getattribute("href");
  assert.areequal("something", label);
  assert.areequal("something else", url);
  row++;
}

现在是这样的:如果鼠标指针放在下拉框上,在执行时,item.text返回值,测试成功。如果指针在其他任何地方,item.text将为空,测试失败。为了理解发生了什么,并从这样一个事实中获得线索,即尽管测试在运行时会失败,但在执行时会成功,我用一个循环修改了代码:

while (data_file.read())
{
  iWebElement item = list_items[row];
  string label = item.text;
  while (label == "")
  {
    label = item.text;
  }
  string url = item.getattribute("href");
  assert.areequal("something", label);
  assert.areequal("something else", url);
  row++;
}
item = list_items[row];
label = item.text;
label = list_items[row].text;

getAttribute(“value”)也不会比.text产生更快的结果。

共有1个答案

宇文俊明
2023-03-14

至于为什么菜单会以这种方式运行,用您提供的代码很难讲清楚。如果您能提供显示菜单的代码,这可能会有所帮助。至于解决办法,有两种。

>

  • 由于while循环本身的原因,标签显示的时间可能会更长--它会非常快地一遍又一遍地抓取文本。更好的解决方案是等待元素出现。这可能会使您的代码运行得更快。有关使用WebDriverWait的信息,请参阅Selenium网站。

    或者,有一个“丑陋”的解决方案。您只需将鼠标移动到带硒的菜单上,以确保菜单在您需要时始终显示。我从这里改编了一些代码作为示例:

    OpenQA.Selenium.Interactions.Actions builder = new 
            builder.MoveToElement(list).Build().Perform();
    

  •  类似资料:
    • 问题内容: 如何按照自然风格对齐工具提示:鼠标指针的右下角? 问题答案: 对于默认的工具提示行为,只需添加属性。但是它不能包含图像。 在您弄清楚我是用纯JavaScript完成此问题之前,希望您发现它有用。图像将弹出并跟随鼠标。 JavaScript CSS 扩展多个元素 多个元素的一种解决方案是更新所有工具提示,并在鼠标移动时将其设置在光标下方。

    • 我必须将鼠标光标(指针)移动到一个特定的元素,然后点击该元素。我已经写了下面的代码,但它没有帮助。虽然我可以看到光标类型(图像)正在改变,但它并没有改变它的位置。 请帮忙。下面是我的代码:

    • 本文向大家介绍jQuery实时显示鼠标指针位置和键盘ASCII码,包括了jQuery实时显示鼠标指针位置和键盘ASCII码的使用技巧和注意事项,需要的朋友参考一下 本文通过jquery技术实现鼠标指针位置和键盘ASCII码,代码简单易懂,具体内容请看下文吧。   按A 以上内容是小编给大家介绍的jQuery实时显示鼠标指针位置和键盘ASCII码,希望对大家有所帮助,更多知识请关注呐喊教程官网,该站

    • 我需要移动我的鼠标指针。我用的是硒和c。 MoveByOffset和MoveToElement都在执行右键单击,但鼠标指针没有移动。

    • 问题内容: 我正在构建HTML5游戏,并且尝试将鼠标指针放在特定事件上的某个控件上,以便在特定方向上移动始终具有相同的结果。这可能吗? 问题答案: 因此,我知道这是一个古老的话题,但是我首先要说这是不可能的。当前最接近的事情是将鼠标锁定在单个位置,并跟踪其x和y的变化。这个概念已经被Chrome和Firefox所采用。它由所谓的 Mouse Lock进行管理 ,点击逃逸将破坏它。通过我的 简要 阅

    • 我使用Selenium和C#执行单击操作。 我可以执行点击操作,但我不能将鼠标指针(光标)移动到特定坐标或特定元素上。 这是我正在使用的代码。上下文单击正在工作,但光标未移动。 帮帮我。