使用Edge Chrome浏览器,selenium和Visual Basic。我有一个web表,我正试图遍历这些行。我遇到的问题是元素名的一部分是动态的。
因此,对于我当前的edge会话,第一列中前三行数据的xpath是:
//*[@id="content_ctl03_ctl00_G0_G10_G12_BC_e0149528_91fd_45d4_9c23_7b4df75a9207"]/tr[2]/td[1]/div/span
//*[@id="content_ctl03_ctl00_G0_G10_G12_BC_e0149528_91fd_45d4_9c23_7b4df75a9207"]/tr[3]/td[1]/div/span
//*[@id="content_ctl03_ctl00_G0_G10_G12_BC_e0149528_91fd_45d4_9c23_7b4df75a9207"]/tr[4]/td[1]/div/span
打开一个不同的浏览器会话,它可能是这样的:
//*[@id="content_ctl03_ctl00_G0_G10_G12_BC_d42b9044_d0bd_4a28_98b2_0631ffd0618c"]/tr[2]/td[1]/div/span
//*[@id="content_ctl03_ctl00_G0_G10_G12_BC_d42b9044_d0bd_4a28_98b2_0631ffd0618c"]/tr[3]/td[1]/div/span
//*[@id="content_ctl03_ctl00_G0_G10_G12_BC_d42b9044_d0bd_4a28_98b2_0631ffd0618c"]/tr[4]/td[1]/div/span
所以这可能对今天遍历表的行有用…但是由于XPath的这一部分发生了变化,所以它只是临时的。....G10_G12_BC_*836efe7a_d391_42e4_99da_70ca92d784fb *']/tr.......
D.FindElementByXPath("//*[@id='content_ctl03_ctl00_G0_G10_G12_BC_836efe7a_d391_42e4_99da_70ca92d784fb']/tr[" & i & "]/td[1]").Click
我不确定我的语法是否错误,但我尝试使用XPath以和包含开头,但这给了我一个错误32 InvalidSelectorError。
Set table_element = D.FindElementByXPath("//*[starts-with(@id, 'content_ctl03_ctl00_G0_G10_G12_BC')] and contains(@id, 'tr[" & i & "]/td[1]/div/span')")
我也不能让这样的东西工作。获取运行时错误438对象不支持
Set table_element = D.FindElementByXPath("//*[starts-with(@id, 'content_ctl03_ctl00_G0_G10_G12_BC')]")
Set elem = D.table_element.FindElementByXPath("//*[contains(@id, 'tr[" & i & "]/td[1]/div/span')]")
1条答案
按热度按时间zlwx9yxi1#
你在第二个表达式中把括号弄错了。试试这个
如有必要,附加
/div/span
。