我正在尝试将元素循环到Selenium中,但是它不起作用。
特别是,我需要按以下方式进行y更改:row0, row1, row2
,等等...
for i in range(0, int(nr)):
y='row'+ "(nr)"
elems = browser.find_element_by_xpath("//tr[contains(@class, y]").text
browser.find_element_by_class_name('nxt').click()
我已经找到了一个解决方案,但是它并不是很可靠,没有放入"contains"
的情况下,我就加入"starts-with"
来查找所有以row开头的元素:
elems = browser.find_elements_by_xpath("//tr[starts-with(@class, 'row')]")
答案 0 :(得分:1)
根据您的问题和代码试验,推测变量 nr 的类型为string
。
因此,当您将 nr 转换为int
类型时,接下来要将其附加到其他样式row
时,必须将其转换回{{1} }。
示例代码:
string
控制台输出:
nr="5"
for i in range(0, int(nr)):
y='row'+str(i)
print(y)
现在,您可以轻松地在 xpath 中使用变量row0
row1
row2
row3
row4
。
最后,在没有相关的 HTML 的情况下,很难猜测属性 y
的形成。但是,最佳用法如下:
class
:如果starts-with()
属性开头包含 text row0 ,请使用starts-with()
。>
示例:
class
实现:
class="row0MCat"
elems = browser.find_element_by_xpath("//tr[starts-with(@class='%s')]" %(y)).text
:如果contains()
属性在中间或中间包含 text row0 ,则使用contains()
。结束。
示例:
class
实现:
class="Mrow0Cat", class="MCatrow0"