我在xpath下使用给定的格式,但是我的脚本没有单击这些元素(python,scrapy,selenium)
driver.find_element(By.XPATH, '//*[@id="MiniReport2"]/thead/tr/td[@class="Over" and contains(@onclick,"MenuClick")]')
HTML示例:
<table id="MiniReport2" border="0" cellspacing="0" cellpadding="0" class="Menu Unit" style="">
<thead>
<tr>
<td onmouseover="className='Over'" onmouseout="className=''" onclick="javascript:MenuClick('MiniReport2');" class="">
<div class="Plus">4. Report</div>
</td>
</tr>
</thead>
</table>
答案 0 :(得分:0)
欢迎来到。
这是您可以使用的xpath。
//table[@id='MiniReport2']//td[contains(@onclick,'MenuClick')]
这是脚本(我想您正在使用python)
driver.find_element_by_xpath("//table[@id='MiniReport2']//td[contains(@onclick,'MenuClick')]").click()
如果您想点击4. Report
,请使用以下内容
driver.find_element_by_xpath("//table[@id='MiniReport2']//td[contains(@onclick,'MenuClick')]/div[normalize-space(.)='4. Report']").click()
答案 1 :(得分:0)
要处理动态元素,请使用WebdriverWait
并遵循定位器策略。
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
element=WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.XPATH,'//table[@class="Menu Unit"][starts-with(@id,"MiniReport")]//tr//td[contains(@onclick,"MenuClick")]/div[@class="Plus"][contains(.,"4. Report")]')))
element.click()