Python 如何在webdriver selenium google chrome中定位没有id、名称和xpath的元素

Python 如何在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

如何在没有名称、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 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%;">&nbsp;</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>&nbsp;</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的解决方案的方向思考。