【问题标题】:How to get the value of label text in selenium webdriver如何在 selenium webdriver 中获取标签文本的值
【发布时间】:2019-12-29 22:53:43
【问题描述】:

我试图在 Selenium web-driver(java) 中获取 permission key 的值,但我无法识别该元素。谁能帮我识别元素并获取值"4BF12-50763-166E0"

有 9 个跨度类同名,很难识别。

网页部分如下所示,我想获取以下每个元素的值,例如versionstatus 等。所有元素都存在于 span 类中,如下图所示。

任何建议都会有很大帮助。

Version                       1.2
Status                        Enabled
Days left                     373
Permission KEY                4BF12-50763-166E0
Permission Serial Number      99678905096711
Subscription End Date         2020-08-31

附上 HTML 示例。

我试过这个,但它只选择"Permission KEY"

  WebElement details =  driver.findElement(By.xpath("//b[text()='Permission KEY']"));
  String title = details.getAttribute("title");
  String label = details.getText();
  System.out.println("Title is  " +title);
  System.out.println("Label is" +label); 

【问题讨论】:

  • 我们能否了解您在代码方面尝试过的内容以及您遇到的失败/错误是什么?我还看到有一个 id 为permission96711 的元素。这是独一无二的还是每次都在变化?
  • @Linu 请阅读为什么screenshot of HTML or code or error is a bad idea。考虑使用基于格式化文本的相关 HTML、代码试验和错误堆栈跟踪来更新问题。
  • @demouser123 我已经编辑了我的问题,但后来我意识到那些是 2 个标签,无法按值获取它。此外,permission96711 这将在每次运行时发生变化,所以不可能方式。请有任何其他方式。
  • @DebanjanB 我第一次尝试复制 HTML 代码本身,但对齐方式和所有内容都各不相同,让堆垛机难以理解,所以这就是为什么将其作为图像放置。跨度>

标签: java selenium selenium-webdriver


【解决方案1】:

你可以在你的xpath 中使用preceding-sibling 策略,试试下面这个:

WebElement key = driver.findElement(By.xpath("//span[@class='pull-right property-value' and ./preceding-sibling::span/b[contains(text(),'Permission KEY')]]"));
System.out.println("Permission KEY : " +key.getText());

确保这是正确的类名:@class='pull-right property-value',因为我从你的图片中看到了。

【讨论】:

  • 非常感谢您的回复,我已经尝试过这个解决方案但无法获得独特的元素,附上屏幕截图,您可以看到使用上述方法时有2个元素。任何建议请。
  • 尝试(//b[text()='Version']/ancestor::dd/span[2])[1] 并尝试将[1] 更改为[2]
【解决方案2】:

您可以在这种情况下找到您想要的文本“权限密钥”转到祖先元素并转到包含该值的第二个跨度。

XPath:

String xpath = "//b[text()='Permission Key']/ancestor::dd/span[2]";
WebElement spanElement =  driver.findElement(By.xpath(xpath));

spanElement.getText(); // Will give you '4BF12-50763-166E0'

重要提示:您可以将“权限密钥”更改为任何其他值,例如“版本”和 IF,它们遵循相同的模式,它适用于全部,例如:

String xpath = "//b[text()='Version']/ancestor::dd/span[2]";
WebElement spanElement =  driver.findElement(By.xpath(xpath));

spanElement.getText(); // Will give you '1.2'

【讨论】:

  • 非常感谢您的回复,我已经尝试过这个解决方案但无法获得独特的元素,附上屏幕截图,您可以看到使用上述方法时有2个元素。任何建议请。
  • 好的,但是你想要什么?第一个元素还是第二个?如果您的屏幕有多个记录,您需要选择哪一个,您在屏幕上搜索之前是否搜索您知道的任何 SPEFIC 值?
猜你喜欢
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多