- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
很抱歉这个问题太长了。
更具体地说,我试图点击第 4 行显示的铅笔图标(编辑按钮)
这是我尝试执行的代码:
WebElement ele = driver.findElement(By.xpath("//a[contains(@title, 'Edit Row')]"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
Executor1.executeScript("arguments[0].click();", ele);
在我运行 selenium 代码之后,驱动程序实际上点击了第一行的编辑按钮(管理 | NA)而不是第四行。我发现不仅第一行而且其他行也有相同的 HTML 代码,唯一的区别是铅笔/编辑按钮被隐藏了,因为我不是创建该行值的人。
我也试过下面的代码:
driver.findElement(By.xpath("//a[contains(@title, 'Edit Row')]")).click();
然后我收到错误
element is not currently visible and so may not be interacted with
司机似乎还在看第一行隐藏的编辑按钮,而不是第四行明显可见的按钮。
我是否可以根据值而不是行号单击“编辑”按钮?原因是将来我输入的测试值可能不会在第 4 行,而是在第 1 或第 10 行。
最后但同样重要的是,我的 Safari 似乎无法运行 JS Executor 代码,每次尝试时,都会返回以下错误:
org.openqa.selenium.WebDriverException: 'undefined' is not a function (WARNING: The server did not provide any stacktrace information)
有人也可以为我阐明这一点吗?
干杯
最佳答案
由于只显示一个编辑图标,下面的代码应该可以工作。
driver.findElement(By.cssSelector("a[title='Edit Row']")).click();
我认为您遇到隐藏元素问题的原因是您使用 JSE 来单击它。 Selenium 被设计为仅与可见的元素进行交互……以用户的方式进行交互。 JSE 允许您与不可见的元素进行交互。使用 JSE 是有原因的,但我认为这不是其中之一。使用 JSE,您找到了一个与您的 XPath 匹配但不可见的元素,然后尝试单击它...因此出现错误。
关于javascript - Selenium WebDriver : clicking a visible button inside a row of a table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38091747/
我遇到过这个 html: 上面的html和这个有什么区别: 最佳答案 来自MDN page on the tag : 对于 type 的属性标签,可能的值是: 提交:按钮将表单数据提交给服务器
Button button= (Button) findViewbyID(R.id.button); 和 Button button = new Button(this); 有什么区别? 最佳答案 有
我是一名优秀的程序员,十分优秀!