HTML格式:
<select id="XYZ_SV_12345" class="clsSelectControl pv" multiple="" size="11" aria-multiselectable="true" aria-invalid="false" style="width: auto;">
这里的id是动态的,但前几个字符总是相同的,即:“XYZ\u SV\u”是常量,其余的数值是动态的。你知道吗
我尝试使用以下方法查找元素,但没有祝你好运帮我找到元素。你知道吗
driver.find_element_by_xpath("//*[contains(@id, 'XYZ_SV_']")
driver.find_element_by_css_selector('input[id*="XYZ_SV_"]')
driver.find_element_by_css_selector(".clsSelectControl.pv")
将css选择器
input[id*="XYZ_SV_"]
替换为input[id^='XYZ_SV_']
,如果selenium能够在dom中找到唯一的条目,那么它应该可以工作。你知道吗注意,
*
if表示子串匹配,而^
表示start-with
。你知道吗代码:
如果contains不起作用,我不认为start with会起作用,因为id格式会类似(我的假设),如果您要查找的id是许多可用的类似start with id中的第一个,那么selenium会选择它。或者,您可以将id与类组合在一起以形成唯一的组合。你知道吗
也许你可以试试
如果这不起作用。你应该寻找祖先,直到你只找到一个元素,然后遍历回到你需要的地方。可以添加整个Dom吗?这样我就可以形成xpath了。 试着用一种独特的方法来识别元素。您可以转到父级/同级/祖先以获取要搜索的元素。你知道吗
selenium 4的Alpha版本已经发布了,您可以添加它并使用附近的标记名,然后选择relativeBy的above、below、toRightOf、toLeftOf、near(50像素)方法。你知道吗
(我的建议是,在最终发布稳定版本之前,不要在生产环境中使用selenium 4,但可以在本地环境中试用)
下面是您应该使用的xpath。你知道吗
下面是代码。你知道吗
屏幕截图:
如果你想使用CSS,那么请检查以下内容。你知道吗
下面是代码
屏幕截图:
相关问题 更多 >
编程相关推荐