【问题标题】:Selenium extract certain value from element硒从元素中提取一定的价值
【发布时间】:2021-12-23 14:16:09
【问题描述】:

我有一个页面,其代码设计如下。由此,我想使用自动化 id 分别获取值 '6' 和 'ft'。

<span class="something" ....>
    <span abcdef automation-id="xyz"> My height is 6 ft </span>
</span>

我看到了这个问题,这在一定程度上有所帮助。 Qharr 在这里给出的解决方案是有道理的。 How to locate an element and extract required text with Selenium and Python 我正在尝试通过使用自动化 id 以类似的方式查找元素,并通过使用 + 运算符获取兄弟值的值“6”和“ft”?

WebElement x = driver.find_element_by_css_selector(use automation id)+ .... 

所以基本上在上面一行中,我希望 x 捕获值 '6' 并使用不同的 webelement 说 y 在一行代码中捕获值 'ft'。

【问题讨论】:

  • 向我们展示您的尝试以及问题所在。
  • @stuart 根据您的代码试验driver.find_element_by_css_selector() 和链接的讨论,我已将 Java 标记替换为 Python 标记。让我知道更改是否符合您的要求,否则我将恢复更改。

标签: python selenium selenium-webdriver split webdriverwait


【解决方案1】:

首先您必须提取短语My height is 6 ft,然后使用split() 将文本/字符串拆分为一个列表。现在您可以根据它们各自的位置从列表中打印所需的元素,如下所示:

print("Number: " + WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[@automation-id='xyz']"))).text.split()[-2])
print("Units: " + WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[@automation-id='xyz']"))).text.split()[-1])

控制台输出:

Number: 6
Units: ft

注意:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

【讨论】:

    【解决方案2】:

    你可以试试这个方法:

    WebElement x = driver.find_element_by_css_selector(use automation id)+ .... ;
    
    
    String info = x.getText();
    
    String[]y = info.split(" ");
    
    String height = y[y.length-2];
    String weightMeter = y[y.length-1];
    

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 2015-02-23
      • 1970-01-01
      • 2014-04-11
      • 2012-01-23
      • 2013-07-24
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多