如何通过Selenium Python单击表中的元素
我想单击表ID“ContractDesc”、“EEE”内容中的单元格: HTML页面:如何通过Selenium Python单击表中的元素,python,selenium,xpath,css-selectors,webdriver,Python,Selenium,Xpath,Css Selectors,Webdriver,我想单击表ID“ContractDesc”、“EEE”内容中的单元格: HTML页面: <table cellpadding="0" cellspacing="0" border="0" class="tablelist" id="table1" style="width: 80%; margin: 0px 0px 0px 0px;"> <thead> <tr> <th style="width: 30%"
<table cellpadding="0" cellspacing="0" border="0" class="tablelist" id="table1" style="width: 80%; margin: 0px 0px 0px 0px;">
<thead>
<tr>
<th style="width: 30%">
AAA
</th>
<th>
BBB
</th>
<th style="width: 40%">
CCC
</th>
</tr>
</thead><tbody>
<tr id="1" onmouseout="fnMouseOut(1)" =="" ""="" onmouseover="fnMouseOver(1)" onclick="selectRow(this)" style="cursor: pointer; background-color: rgb(248, 248, 248);" projectid="111111">
<td align="center" name="contno">
DDD
</td>
<td name="ContractDesc">
EEE
</td>
<td name="">
FFF
</td>
</tr>
</tbody>
</table>
及
错误是:
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“/*[@id=“1”]/td[2]”
请尝试以下XPath:
驱动程序。通过xpath(“//td[@name='ContractDesc']”)查找元素。单击()
请检查元素是否在iframe中,如果是,则需要使用以下命令将驱动程序切换到iframe:WebElement iframe=driver.findelelement(按.tagName(“iframe”)代码>然后驱动程序.switchTo().frame(iFrame)
然后需要通过给定的xpath单击元素,如果要切换到默认上下文,则可以使用driver.switchTo().defaultContent()
您可以使用下面的xpath按名称和文本进行选择,规范化空格
删除所有空格:
//td[@name='ContractDesc' and normalize-space(.)='EEE']
要在文本为EEE的元素上单击()
,可以使用以下任一解决方案:
- 使用
CSS\u选择器
:
driver.find_element_by_css_selector("table.tablelist#table1 tr#1 td[name='ContractDesc']").click()
- 使用
XPATH
:
driver.find_element_by_xpath("//table[@class='tablelist' and @id='table1']//tr[@id='1']//td[@name='ContractDesc' and normalize-space()='EEE']").click()
表格是否在IFRAME
中?是的,我想它在框架上,JeffC先生。@TZJ4,情况如何?你核对我的答案了吗?谢谢。@RatmirAsanov没人能用,整个答案都有错误,比如“找不到元素”。感谢you@TZJ4,向我们显示更多HTML(iframe或弹出窗口或其他您需要的web元素所在的内容)。谢谢您,先生,但仍然出现错误“找不到元素:”请检查它是否在iframe中,如果是,您需要使用以下命令将驱动程序切换到iframe:WebElement iframe=driver.findElement(by.tagName(“iframe”)代码>然后驱动程序.switchTo().frame(iFrame)
然后您需要通过驱动程序单击元素。通过xpath(//td[@name='ContractDesc'])查找元素。单击()
如果要切换到默认上下文,则可以使用驱动程序。切换到().defaultContent()代码>请尝试一下,并让我知道它是否有效。我也在编辑我的答案。非常感谢,但是CSS返回错误“A18-0110”和XPATH返回“找不到元素”:
driver.find_element_by_css_selector("table.tablelist#table1 tr#1 td[name='ContractDesc']").click()
driver.find_element_by_xpath("//table[@class='tablelist' and @id='table1']//tr[@id='1']//td[@name='ContractDesc' and normalize-space()='EEE']").click()