我可以记录但不能双击本地网页的元素来提取结果页面/使用 selenium:python



我浏览了很多帖子,无法对双击下面的我的网页元素进行任何更改:

 <div  class="tbl-content">
                <table class="hoverTable" cellpadding="0" cellspacing="0" border="0" id="alarms">
                    <tbody>  <tr ondblclick="DoubleRowClick(this, '9', '2019-06-12 15:59:49', '2019-06-12 16:00:55');" id="NotRead">
                        <td class="NotReadCell">2019-06-12</br>15:59:49 UTC </td>
                        <td class="NotReadCell"> NAME 1 </td>
                        <td>
                            <div class='slideTwo'>
                                <input type='checkbox' value="None" id="slide9" name="check" onchange="stateCheck(this, '9');">
                                <label for="slide9"></label>
                            </div>
                        </td>
                    </tr>  <tr ondblclick="DoubleRowClick(this, '10', '2019-06-13 09:32:54', '2019-06-13 09:33:36');" id="NotRead">
                        <td class="NotReadCell">2019-06-13</br>09:32:54 UTC </td>
                        <td class="NotReadCell">  NAME 2 </td>
                        <td>
                            <div class='slideTwo'>
                                <input type='checkbox' value="None" id="slide10" name="check" onchange="stateCheck(this, '10');">
                                <label for="slide10"></label>
                            </div>
                        </td>
                    </tr>  <tr ondblclick="DoubleRowClick(this, '11', '2019-06-13 09:34:47', '2019-06-13 09:35:10');" id="NotRead">
                        <td class="NotReadCell">2019-06-13</br>09:34:47 UTC </td>
                        <td class="NotReadCell">  NAME 3 </td>
                        <td>
                            <div class='slideTwo'>
                                <input type='checkbox' value="None" id="slide11" name="check" onchange="stateCheck(this, '11');">
                                <label for="slide11"></label>
                            </div>
                        </td>
                    </tr>  <tr ondblclick="DoubleRowClick(this, '12', '2019-06-13 09:36:38', '2019-06-13 09:37:44');" id="NotRead">
                        <td class="NotReadCell">2019-06-13</br>09:36:38 UTC </td>
                        <td class="NotReadCell">  NAME 4 </td>
                        <td>
                            <div class='slideTwo'>
                                <input type='checkbox' value="None" id="slide12" name="check" onchange="stateCheck(this, '12');">
                                <label for="slide12"></label>
                            </div>
                        </td>
                    </tr>  <tr ondblclick="DoubleRowClick(this, '13', '2019-06-13 12:22:35', '2019-06-13 12:23:41');" id="NotRead">
                        <td class="NotReadCell">2019-06-13</br>12:22:35 UTC </td>
                        <td class="NotReadCell">  NAME 5 </td>
                        <td>

我的代码是:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
driver = webdriver.Chrome()
driver.get("http://1.2.3.4:82805/")
assert "Home" in driver.title
elem = driver.find_element_by_name("pwd")
#print (elem)
elem.clear()
elem.send_keys("0000")
elem.send_keys(Keys.ENTER)
driver.get("http://1.2.3.4:82805/menu.php")
driver.maximize_window()
element = driver.find_elements_by_xpath("//*[@id='NotRead']")
actions = ActionChains(driver)
actions.double_click(element).perform()

我的错误是:

Traceback (most recent call last):
  File "C:projects_DriverswebBrowser.py", line 19, in <module>
    actions.double_click(element).perform()
  File "C:UsersAppDataLocalProgramsPythonPython37-32libsite-packagesseleniumwebdrivercommonaction_chains.py", line 83, in perform
    action()
  File "C:UsersAppDataLocalProgramsPythonPython37-32libsite-packagesseleniumwebdrivercommonaction_chains.py", line 277, in <lambda>
    Command.MOVE_TO, {'element': to_element.id}))
AttributeError: 'list' object has no attribute 'id'

我尝试了很多解决方案,但我需要知道问题是否在我的 python 编码方式中,或者无法使用此 HTML Web 界面执行我需要做的事情。

我的问题是,如果没有id,是否可以单击它?或者我怎样才能找到要单击的按钮。我可以理解 Web 界面编码不好,但我不允许更改其代码或添加元素。提前谢谢你

首先,find_elements_by_xpath将返回元素列表,在您的代码中,您传递的是列表而不是元素。

所以,更改下面的行

element = driver.find_elements_by_xpath("//*[@id='NotRead']"(

element = driver.find_element_by_xpath("//*[@id='NotRead']"(

最新更新