是否有一种优雅的方法来获取我已经发现/识别的Selenium WebElement的“按”定位器?
要明确这个问题:我希望使用“按定位器”来查找元素。在这种情况下,我对特定属性或特定位置(如css-locator) 不 感兴趣。
我知道我可以解析WebElement的toString()方法的结果:
WebElement element = driver.findElement(By.id("myPreciousElement"));
System.out.println(element.toString());
输出例如:
[[FirefoxDriver:WINDOWS(....)上的Firefox]-> id:myPreciousElement]
如果您通过xpath找到了元素:
WebElement element = driver.findElement(By.xpath("//div[@someId = 'someValue']"));
System.out.println(element.toString());
然后您的输出将是:
[[FirefoxDriver:WINDOWS(....)上的Firefox]-> xpath:// div [@someId
=’someValue’]]
因此,我目前编写了自己的方法来解析此输出并为我提供“重新创建的”按定位符。
到目前为止我找不到。
如果您确定没有开箱即用的功能,您能想到API创建者可能不提供此功能的任何原因吗?
*尽管这与问题无关,但如果有人想知道为什么您将需要此功能,则仅举两个示例:
答案是 否定的 。By
默认情况下,您不能从先前找到的WebElement中提取。
话虽这么说-可以实现自定义解决方案,但Selenium并不提供这种现成的方法。
考虑以下有关“为什么”的问题。
By by = By.id("someId");
WebElement e = driver.findElement(by);
您已经有了By
对象,因此您无需调用类似e.getBy()
有没有一种优雅的方法来获取我已经找到/识别的Selenium WebElement的By定位器? 为了明确这个问题:我想要用于查找元素的“通过定位器”。在这种情况下,我对特定的属性或特定的定位器(如css-locator)不感兴趣。 我知道我可以解析WebElement的toString()方法的结果: 例如,输出为: [[FirefoxDriver:WINDOWS上的firefox(..)]-
我遵循一个页面对象模型,并使用一个基类,该基类具有所有通用和可重用的方法,并为我的web应用程序的每个页面提供单独的页面。 现在,我正在尝试在BasePage中创建一个可以在其他页面中使用的方法。在每个页面中,我都使用了页面工厂作为元素。 我在我的BaseClass中使用下面的方法,并且我坚持将定位器提取到下面的方法中,以便我可以在所有页面中针对不同的元素定位器使用此方法。 我被困在这里: 我使用
我正在使用selenium Java搜索不同的网站,我知道要查找特定的WebElement,有不同的方法,比如使用Xpath、使用Class或使用id。假设某网站具有如下所示的html结构 现在,如果我想从类名为“score”和“score_title”的div中提取文本,即1%的强度、43:1的情感、75%的激情和12%的到达,下面哪个选项最好。
我使用了以下代码, 这会引发错误“表达式不是合法表达式”。“代码:“12”nsresult:“0x805b0033(SyntaxError)”位置:”“]”。 当我缩小搜索范围到 它工作正常,我得到了特定行中的所有文本。然而,当我将其扩展到特定于第1个代码中所示的列时,我得到了错误。 html代码段,
这是我的listview点击事件: 这是我的按钮点击事件: 现在,我需要获得单击的listview项的位置。我已经声明了全局位置,但这总是给我位置1。 有人能告诉我怎么得到这个职位吗?
在我的项目中使用JavaSelenium和Page Object,想要创建一个自定义方法,将两个字符串作为参数,组合它们并调用右webelement来执行一些操作。 下面的例子我的页面对象 } 例如,调用该方法: 调用此方法应执行click on question1Yes元素。