Python 如何在webdriver selenium google chrome中定位没有id、名称和xpath的元素
如何在没有名称、id属性的情况下定位元素tdPython 如何在webdriver selenium google chrome中定位没有id、名称和xpath的元素,python,selenium,xpath,webdriverwait,xpath-1.0,Python,Selenium,Xpath,Webdriverwait,Xpath 1.0,如何在没有名称、id属性的情况下定位元素td <tr class="odd" onmouseover="this.className='highlight'" onmouseout="this.className='odd'"> <td style="width:4%;">J199</td> <td style="width:5%;">056962840</td> <td
<tr class="odd" onmouseover="this.className='highlight'" onmouseout="this.className='odd'">
<td style="width:4%;">J199</td>
<td style="width:5%;">056962840</td>
<td style="width:3%;">S</td>
<td style="width:5%;">11</td>
<td style="width:7%;">0606353</td>
<td style="width:7%;">4846962</td>
<td style="width:3%;">1</td>
<td style="width:20%;">S1-4100181163-MANUAL</td>
<td style="width:5%;">2019-07-03</td>
<td style="width:5%;"> </td>
<td style="width:5%;cursor: pointer;"><span title="CSARL-SB/SINGAPORE PARTS DC">Y850</span></td>
<td style="width:5%;">2019-09-04</td>
<td> </td>
</tr>
J199
056962840
s
11
0606353
4846962
1.
S1-4100181163-手册
2019-07-03
Y850
2019-09-04
我只想找到
2019-09-04
并在python中调用它webdriver
来定位文本为2019-09-04的
,您必须诱导WebDriverWait以获得元素的可见性,并且您可以使用以下任一选项:
- 使用xpath和元素位置:
element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "//tr[@class='odd' and contains(@onmouseover, 'highlight')]//following-sibling::td[12]")))
- 使用xpath和标题CSARL-SB/SINGAPORE PARTS DC:
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
要定位文本为2019-09-04的
,您必须诱导WebDriverWait,以获得所定位元素的可见性()
,并且您可以使用以下任一选项:
- 使用xpath和元素位置:
element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "//tr[@class='odd' and contains(@onmouseover, 'highlight')]//following-sibling::td[12]")))
- 使用xpath和标题CSARL-SB/SINGAPORE PARTS DC:
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
如果您希望匹配2019-09-04
的文本,它将类似于:
//td[text()='2019-09-04']
如果要匹配最后一个
标记之前的
标记,请选择和功能组合:
//td[position()=last()-1]
更多信息:如果您想匹配2019-09-04的
//td[text()='2019-09-04']
如果要匹配最后一个
标记之前的
标记,请选择和功能组合:
//td[position()=last()-1]
更多信息:为什么说不能使用XPath访问此元素?您的设置中不能使用XPath有什么特别的原因吗?哦,对不起,我是selenium的新手,有没有办法用XPath访问这个元素?你能教我吗?是的,XPath应该可以,但可能需要更多的上下文,甚至可能需要整个HTML文档。如果要选择的元素始终是所有奇数列中右侧的第二列,则XPath将如下所示://tr[@class='odd']/td[position()=last()-1]
在您的情况下,可能需要在表中查找特定的奇数列?然后必须调整tr
的谓词。是的,它起作用了。但有两个结果。tr
属于此表id=boresulttable\u表
。有没有办法在xpath中添加此项并确保只有一个结果?谢谢@费尼奥,我明白了。我反对将XPath排除在外作为rob问题的可能解决方案,这让我有点盲目,并阻止我朝着更特定于Python的解决方案的方向思考?您的设置中不能使用XPath有什么特别的原因吗?哦,对不起,我是selenium的新手,有没有办法用XPath访问这个元素?你能教我吗?是的,XPath应该可以,但可能需要更多的上下文,甚至可能需要整个HTML文档。如果要选择的元素始终是所有奇数列中右侧的第二列,则XPath将如下所示://tr[@class='odd']/td[position()=last()-1]
在您的情况下,可能需要在表中查找特定的奇数列?然后必须调整tr
的谓词。是的,它起作用了。但有两个结果。tr
属于此表id=boresulttable\u表
。有没有办法在xpath中添加此项并确保只有一个结果?谢谢@费尼奥,我明白了。我反对将XPath排除在外作为rob问题的可能解决方案,这让我有点盲目,并阻止我朝着更特定于Python的解决方案的方向思考。