当我想通过特定文本+变量搜索它时,无法通过元素包含的特定文本找到带有硒的元素

cant find an element with selenium by a specific text the element contains, when i want to search for it by the specific text + a variable

我想通过它包含的特定文本来查找元素。效果很好,但问题来了。 有多个元素,所有元素都有包含“EU”和数字的特定文本...

例如:“EU 40”或“EU 30”。现在我想用一个变量替换数字,这样我就可以决定特定文本应该包含什么数字。 让我向您展示我的代码:

real_size_btn = browser.find_element_by_xpath("//button[text()='EU 40']")
real_size_btn.click()

此代码有效,但无效的是此代码:

size = input("size:")
real_size_btn = browser.find_element_by_xpath("//button[text()='EU "+size+"']")
real_size_btn.click()

每次我 运行 第二个代码它说:"no such element: Unable to locate element: {"method":"xpath","selector":"//button[text()='EU 41']"}"

希望有人能解决这个问题,我将不胜感激。

稍作修改: 这是主要元素: 欧盟 40

在主元素之上是这个元素:

<input aria-describedby="pdp-buytools-low-inventory-messaging" id="skuAndSize__26126342" name="skuAndSize" type="radio" class="visually-hidden" value="26126342:7">

在主要元素下是几乎相同的元素,但有一点不同,因为其他元素是其他鞋码。 例如,这是另一个鞋码的元素:

<label for="skuAndSize__26126330" tabindex="-1" class="css-xf3ahq">EU 39</label>

这个元素上面是这个:

<input aria-describedby="pdp-buytools-low-inventory-messaging" id="skuAndSize__26126330" name="skuAndSize" type="radio" class="visually-hidden" value="26126330:6.5">

希望对您有所帮助。

你能试试这个吗

real_size_btn = browser.find_element_by_xpath("//button[contains(.,'EU "+size+"')])";

你为什么不用 f-strings?

some_number = "your number"
real_size_btn = browser.find_element_by_xpath(f"//button[text()='EU {some_number}']")

此外, 您可以将您的号码放入这样的列表中:

your_list = [10, 20, 30, 40, 50]

并以 your_list[0]your_list[1] 等方式访问它们。