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

选择不可见的元素 - Mac - 野生动物园 11.1 - 硒 - C#

蒯卓君
2023-03-14

我正在测试我们网站的注册,其中一个字段是选择下拉菜单。该测试在所有 Windows 桌面浏览器上完全有效。它也适用于Mac上的铬。此问题仅在 Mac 浏览器 11.1 上出现:

当尝试选择我想要的选项时,它会报告选择元素不可见。

我的测试是在Visual Studio中通过Browserstack完成的。我有屏幕截图和视频,清楚地显示选择元素是可见的(至少对用户而言)。它不在页面底部,没有页脚覆盖任何部分。我滚动到每个元素以与其交互。

我的故障排除:

>

  • 为了查看从选择元素向下是否存在可访问性问题,我注释掉了与选择元素交互的代码,并成功与其下方的元素(文本输入框)进行了交互。

    在尝试选择选项之前,我添加了30秒的等待时间,以防驱动程序/DOM“看到”select元素时出现任何延迟-同样的错误。

    我仔细检查了我的XPath-在我们的本地Mac上,XPath只返回1个结果,这是有问题的select元素(当您通过XPath搜索代码时,它会突出显示)。

    我正在使用Selenium.Support.UI方法通过文本选择一个选项。“选项”保存要选择的文本:

    select element select = new select element(element);选择。SelectByText(选项);

    …因此我尝试通过更改索引使用JavaScript进行选择:

    // Selects the option but no option change occurs from the user's perspective, nor are any events triggered based on the change
    js.ExecuteScript("arguments[0].selectedIndex = \"" + optionIndex + "\";", element);
    // Trigger the change event
    js.ExecuteScript("var event = new Event('change', { bubbles: true }); arguments[0].dispatchEvent(event);", element);
    

    ...这也不起作用,没有得到“元素不可见”,什么也没有改变,测试脚本继续到下一个文本输入。

    我通过在Chrome控制台上的Windows中以及在Safari 11.1中的Mac上手动测试它来验证此方法是否有效(将选择元素的ID更改为某个ID):

    var element = document.getElementById("someID");
    element.selectedIndex = "3";
    var event = new Event('change', { bubbles: true });
    element.dispatchEvent(event);
    

    ...工作正常。

    所以无论我在运行实际测试时如何尝试更改元素,要么我不可见,要么什么都没发生。太奇怪了…

    我错过了显而易见的东西吗?这是否有已知的问题?我想检查这个问题的唯一其他方法是从等式中删除Browserack并在我们的Mac上进行本地测试。这可能是我应该做的第一件事…

  • 共有1个答案

    丘向荣
    2023-03-14

    非常感谢。

    我在JavaScript变通方法方面走在正确的轨道上,但是我的选择元素没有ID,所以我不得不先分配一个,只有这样JavaScript才会更改选项...

    js.ExecuteScript("arguments[0].setAttribute(\"id\", \"automationID\");", element);
    
    js.ExecuteScript("var element = document.getElementById(\"automationID\"); element.selectedIndex = \"" + optionIndex + "\"; var event = new Event('change', { bubbles: true }); element.dispatchEvent(event);");
    
     类似资料:
    • 当用触发时,事件错误表示元素不可见

    • 问题内容: 我的任务是编写一个解析器以单击网站上的一个按钮,但我只能单击其中一个按钮而遇到问题。以下代码适用于除一个按钮之外的所有按钮。 这是html:http: //pastebin.com/6dLF5ru8 这是源html:http: //pastebin.com/XhsedGLb python代码: 我收到此错误。 根据赛富尔,我刚刚尝试等待相同的元素不可见异常: 问题答案: 如果你看一下页

    • 问题内容: HTML: JS: 如您所见,它在chrome中有效,但在safari中不起作用。它应该做的是,当您单击下拉菜单时,隐藏“ I’M THE CHOSEN ONE”选项。 相同的HTML,这是JS: 无论如何,我需要做的是显示一个选定的选项(当前),并在打开下拉菜单时向用户隐藏,以便他无法选择它。 有什么建议/解决方法吗?我没有看到任何错误。Safari有什么问题?我应该改变方式吗?jQ

    • 问题内容: 我有一些CSS3动画,它可以在所有支持CSS3的浏览器(野生动物园)中完美运行。是不是很奇怪 好的,这是我的代码: HTML CSS 好的,正如我所说的,这在Safari中不起作用,没有任何动作。 而且,仍然并且仅在Safari中,只有在调整屏幕大小时才会显示键区div!它在DOM中存在,但是由于某种原因它没有显示出来! 我究竟做错了什么? 更新:好的,从您的答案中我得知Safari

    • 我一直在搜索2天,但我无法找到解决方案,我想要一个下拉列表被选中。当我使用某些元素.all css定位器单击下拉列表时,它会单击下拉列表(下拉列表打开但显示错误)。所以我试图使用链接文本打开下拉列表(完美地打开)。但在那之后,我无法在下拉列表中选择该选项。(显示“不可见元素”)。我也无法通过链接文本选择该选项。以下是详细信息 我试图通过以下方法来选择,但我不能让它工作。 等待元素变为可见。 链接文

    • 我用的是C#硒。WebDriver.2.44.0在某个第三方网站上,我试图按下一个元素并得到这个: 我得到了元素,点击我得到了: 该项目是在一些子菜单显示后,我成功地按下父菜单。也放5秒睡眠保险点手风琴看的很清楚(在我眼里也是看的很清楚)。 问题 - 在第三方网站上,如何强制点击此项目?