Я могу войти, но не дважды щелкните элемент локальной веб-страницы, чтобы извлечь полученную страницу / используя selenium: python - PullRequest
0 голосов
/ 19 июня 2019

Я обошел множество постов и не смог выполнить никаких изменений, дважды щелкнув элемент моей веб-страницы ниже:

 <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_Drivers\webBrowser.py", line 19, in <module>
    actions.double_click(element).perform()
  File "C:\Users\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\common\action_chains.py", line 83, in perform
    action()
  File "C:\Users\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\common\action_chains.py", line 277, in <lambda>
    Command.MOVE_TO, {'element': to_element.id}))
AttributeError: 'list' object has no attribute 'id'

Я перепробовал много решений, но мне нужно знать, заключается ли проблема в моем способе написания кода на Python или невозможно сделать то, что мне нужно сделать с этим HTMLвеб интерфейс.

И мой вопрос: можно ли щелкнуть по нему, если нет идентификатора?Или как я могу найти мою кнопку, чтобы нажать.Я понимаю, что веб-интерфейс недостаточно хорошо закодирован, но мне не разрешено изменять его код или добавлять элементы.Заранее спасибо

1 Ответ

1 голос
/ 19 июня 2019

Прежде всего find_elements_by_xpath вернет список элементов, а в вашем коде вы передаете список, а не элемент.

Итак, измените строку ниже

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

в

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...