Selenium从元素中提取一定的价值

Selenium extract certain value from element

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

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

看到这个问题,有一定的帮助。 Qharr 在这里给出的解决方案是有道理的。 我正在尝试通过使用自动化 ID 以类似的方式查找元素,并通过使用可能的 + 运算符获取兄弟值的值“6”和 'ft'?

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

所以基本上在行上方的一个中,我希望 x 捕获值“6”并使用不同的网络元素说 y 在一行代码中捕获值 'ft'。

你可以这样试试:

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];

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

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