考虑以下
<select id="invisi_select" style="opacity:0;">
<option selected value="apples">Apples</option>
<option value="oranges">Oranges</option>
</select>
它用于模拟
id
显示的不可见元素,通过将opacity
设置为0来实现。
虽然元素不可见,但用户实际上可以与它进行交互。如果我在浏览器中打开页面并单击元素的位置,选择菜单就会打开。我相信这也是为什么
WebElement#isDisplayed()
会为这个元素返回true
,这也是这些旧问题的建议:
https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/1610
- https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/1941
为了执行诸如点击之类的操作,我们最近出于几个原因切换到Java interactions API,例如,为了防止
ElementClickInterceptedException
s(请注意,这不是关于重构一系列Selenium测试,这是在Selenium API之上运行的通用操作执行器的上下文中发生的)然而,如果我这样做:
WebElement applesOption = /* get apples option */
new Actions(webDriver).moveToElement(applesOption)
.click()
.perform();
移动到元素会引发以下异常:
org.openqa.selenium.JavascriptException: javascript error: Failed to execute 'elementsFromPoint' on 'Document': The provided double value is non-finite.
我猜这是因为通过WebDriver Actions API的
elementsFromPoint()
似乎为这样的透明元素返回了一个“非有限”的双精度?
有没有办法在使用
Actions
时防止这种情况发生?也许,除了检查元素是否可单击(预期条件#elementToBeClickable(...)
),我还必须解析-这听起来很可怕-属性,如不透明度
?
此错误消息。。。
org.openqa.selenium.JavascriptException: javascript error: Failed to execute 'elementsFromPoint' on 'Document': The provided double value is non-finite.
...意味着WebDriver实例由于一个或其他原因无法专注于元素:
不使用Java交互API,您可以使用Select类,也可以使用以下任一定位器策略:
>
Select s = new Select(driver.findElement(By.cssSelector("select#invisi_select")));
s.selectByValue("apples");
使用xpath
和selectByVisibleText()
:
Select s = new Select(driver.findElement(By.xpath("//select[@id='invisi_select']")));
s.selectByVisibleText("Apples");
你可以在以下网站上找到一些相关的详细讨论:
我刚刚在本地尝试了您的示例文件,下面的代码正常工作。
WebElement e = driver.findElement(By.id("invisi_select"));
Select select = new Select(e);
select.selectByValue("apples");
System.out.println(select.getFirstSelectedOption().getText());
select.selectByValue("oranges");
System.out.println(select.getFirstSelectedOption().getText());
它会打印
Apples
Oranges
问题内容: .item:hover { zoom: 1; filter: alpha(opacity=50); opacity: 0.5; -webkit-transition: opacity .15s ease-in-out; -moz-transition: opacity .15s ease-in-out; -ms-transition: opacity .15s ease-in-out;
我正在尝试创建一个角度的小小吃栏,它将一个数组作为输入并显示每个通知几秒钟,然后从堆栈中弹出并显示下一个通知。 我希望在这些通知之间有一个不透明度转换。 过渡属性似乎不起作用 这是堆栈闪电战链接 更多信息: < li >应用程序组件有一个按钮,每次单击都会生成一个通知 < li>snackbar组件显示3秒钟的通知,然后删除它并切换到下一个。 < li>snackbar容器用0 opacity()
我正在寻找将Python连接到交互式代理应用编程接口。谷歌搜索显示了ibPy的可用性(见https://pypi.python.org/pypi/ib),但是这个库似乎没有得到维护,也不支持Python 3。我还发现https://github.com/colin1alexander/IbPython3但是这个项目已经被取消了。 我知道Quantopian使用交互式代理作为其执行代理,但有一个用于
问题内容: 故事: 像Google ReCaptcha一样,解决验证码的方法之一就是尝试 模仿人的鼠标动作 :移动,悬停和点击。 一些用户报告说,随着B样条曲线的作用而使鼠标移动。 问题: 如何通过selenium将鼠标移动到遵循B样条轨迹的特定元素上? 请注意,常规会直接且太快地“跳转”到元素。我的理解是,这是放慢移动速度的问题,它遵循B样条轨迹的数学模型从点到点平滑地“跳跃”。 我们正在使用量
问题内容: 假设我要使JPanel%20的不透明度可见。我的意思不是setOpaque(绘制或不绘制)或setVisible(显示或隐藏)…我的意思是使其透明JPanel ..您知道吗? 这可能吗? 问题答案: 您还应该查看具有透明度的背景,以了解使用此功能时可能遇到的任何绘画问题。
问题内容: 我已经实现了[waypoints][1]插件,当对象的像素高于100px时,该对象就会褪色。[使用offet属性],但希望基本上控制对象的不透明度并使动画可见,如上面的示例。 我已经搜寻了全部-这是我的最后选择。任何帮助是极大的赞赏。 问题答案: 我在这里复制粘贴基本代码