我想单击表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%">
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>
我的代码不起作用:
driver.find_element_by_xpath('//*[@id="1"]/td[2]').click()
和
driver.find_element_by_name("ContractDesc").click()
错误是:
硒。常见的例外情况。NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:”//*[@id=“1”]/td[2]”
要在文本为EEE的元素上单击()
,可以使用以下任一解决方案:
>
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()
试试这个XPath:
驱动程序。通过xpath(//td[@name='ContractDesc'])查找元素。单击()
请检查元素是否在iframe中,如果是,则需要使用:WebElement iframe=driver将驱动程序切换到iframe。findElement(按.tagName(“iframe”)
然后是
驱动程序。切换到()。帧(iFrame)
然后您需要通过给定的xpath单击元素,如果您想切换到默认上下文,那么您可以使用驱动程序。切换到()。defaultContent()
您可以使用下面的xpath按名称和文本进行选择,规范化空间
删除所有空白:
//td[@name='ContractDesc' and normalize-space(.)='EEE']
问题内容: 我有一个只具有href值作为属性的锚标记的href值。现在,我想在页面中找到与我的href值具有相同值的元素,然后单击它。我找不到使用标准selenium方法执行此操作的任何方法。如何执行此操作?基本上,这些是我找到的功能,但似乎无法使用其中任何一个: 问题答案: 您可以使用find_element_by_xpath功能。
问题内容: 浏览器:Chrome V65 ChromeDriver:chromedriver.exe 2.37 网络驱动程序尝试单击元素时发生错误。以下是我的click(): 我已经等待元素可见,然后单击。但是引发异常,说“其他元素将获得点击”,如下所示: 即使我添加语句以等待ajax加载完成以单击元素,也会发生错误: 这种情况在Chrome上经常发生,可能是5次出现4次故障。没用! 现在,我必须
问题内容: 我有一个具有,沿。在此之下,我还有更多元素。 目前,当我在叠加层外部单击时,我可以单击基础元素。但是,当直接在叠加层上单击时,我无法单击基础元素。 我希望能够单击此按钮,以便可以单击基础元素。 问题答案: 是的,你CAN做到这一点。 使用与IE11 CSS条件语句一起(在IE10或低于不工作),就可以得到这个问题的跨浏览器兼容的解决方案。 使用,您甚至可以将透明放置在叠加层中,并使点击
问题内容: 第3、16、17、18和19行用*突出显示的含义是什么。有人可以解释他们的工作吗?我是python和编程新手 问题答案: 这段代码中只有三行用*突出显示,但这是它们的意思: 第一行: 这是在声明 后面 的函数( test_Iframe 和 tearDown )的 类* 。在面向对象的编程中,使用一个类来创建“对象” 。可以将 类 视为数据/过程的抽象,而 对象 是类的特定实例。 ***
在谷歌航班页面上,我想点击对话框底部的右箭头(增加天数)(附图)。第二次点击给了我错误。 这是我的代码: 截图