6

我正在尝试在 Python 2.7 中使用 Selenium 中的 Web 元素。元素 ID 是这样的:

cell.line.order(240686080).item(250444868).unitCost

第一个数字字符串“240686080”是已知的,但第二个数字“250444868”事先是未知的。

我试图通过这样的方式达到它。

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("somewebsite.com")
driver.find_elements_by_id('input.line.order(240417939).item('+ '\d{9}'+').unitCost')

所以我的问题是,我们是否只能在已知部分 ID 的情况下搜索并访问该元素?

我发现下面回答了类似的问题,但它是在 C# 中。不幸的是,我不懂 C#。

在 C# 中使用 Selenium 通过部分 id 查找元素

先感谢您!

已编辑 4/8

元素编码如下:

<td id="cell.line.order(240417939).item(250159165).unitCost" class="or_monetarydata">
    <input id="input.line.order(240417939).item(250159165).unitCost" type="hidden" value="135.00" 
    name="order(240417939).item(250159165).unitcost"></input>

    135.00

    </td>

我可以通过

value=driver.find_elements_by_xpath("//*[contains(@id, 'input.line.order(240417939)')]")

谢谢!

4

1 回答 1

13

虽然答案在 C# 中,但底层解决方案仍然是相同的,通过使用 CSS 选择器:

driver.find_elements_by_css_selector('input[id*='cell.line.order(240686080)']')

或者 XPath 也可以这样做:

driver.find_elements_by_xpath('//*[contains(@id, 'cell.line.order(240686080)')]')
于 2013-04-06T10:10:15.050 回答