Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3-Selenium-从嵌套div中删除数据_Python_Selenium_Selenium Webdriver - Fatal编程技术网

Python 3-Selenium-从嵌套div中删除数据

Python 3-Selenium-从嵌套div中删除数据,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我对python相当陌生,我正在尝试检查哪个div类首先出现在页面上。我已经对表行进行了这样的操作,但我似乎不知道如何对div进行这样的操作 我试图确定的是,最新更新是发送的电子邮件还是添加的注释。最新的项目将首先从顶部显示,但此后可能会执行其他操作,例如, 我还没有写过任何代码来完成这项工作,也没有写过任何代码来完成这项工作,但在我的脑海中,我想象它是这样工作的 for sub_div_classes in browser.find_element_by_class_name('cb'):

我对python相当陌生,我正在尝试检查哪个div类首先出现在页面上。我已经对表行进行了这样的操作,但我似乎不知道如何对div进行这样的操作

我试图确定的是,最新更新是发送的电子邮件还是添加的注释。最新的项目将首先从顶部显示,但此后可能会执行其他操作,例如,

我还没有写过任何代码来完成这项工作,也没有写过任何代码来完成这项工作,但在我的脑海中,我想象它是这样工作的

for sub_div_classes in browser.find_element_by_class_name('cb'):
    classname = ~check name of sub_div_class
    if classname = "EMAIL SENT":
        class_info = browser.find_element_by_class_name('plus_header_Additional_info').text
        print(class_info) ¬output: EMAIL SENT :Email sent on 20-03-2016 00:22:09 by [REDACTED]
        trigger_1()
    if classname = "Notes":
        trigger_2()
    ~move on to next div class in list
下面是我尝试使用的页面代码。我非常感谢任何人能提供的任何建议或帮助

<div class="cb" style="margin:5px 0 0 0;">
                              <div class="Updated">
                               <div class="plus_header_Additional_info">Updated&nbsp;:Incident Updated on 20-03-2016 00:22:52 by User = [REDACTED]

                                 <a href="javascript:toggle2('contentDivImg2_0', 'imageDivLink2_0');" id="imageDivLink2_0"><img src="images/minus.png" style="float:right;"></a> 
                               </div>
                                   <div class="plus_content" style="display: block;" id="contentDivImg2_0">
                               <div> 
                                             Assigned to STRIKE1, 
 by User = [REDACTED].
                                </div>
                                <br>
                            </div>
                                </div>
                              <div class="Updated">
                               <div class="plus_header_Additional_info">Updated&nbsp;:PEND CLIENT STRIKE - 1 added on 20-03-2016 00:22:36 by [REDACTED]. 
                                 <a href="javascript:toggle2('contentDivImg2_1', 'imageDivLink2_1');" id="imageDivLink2_1"><img src="images/minus.png" style="float:right;"></a> 
                               </div>
                                   <div class="plus_content" style="display: block;" id="contentDivImg2_1">
                               <div> 
                                </div>
                                <br>
                            </div>
                                </div>
                              <div class="EMAIL SENT">
                               <div class="plus_header_Additional_info">EMAIL SENT&nbsp;:Email sent on 20-03-2016 00:22:09 by [REDACTED] 
                                 <a href="javascript:toggle2('contentDivImg2_2', 'imageDivLink2_2');" id="imageDivLink2_2"><img src="images/minus.png" style="float:right;"></a> 
                               </div>
                                   <div class="plus_content" style="display: block;" id="contentDivImg2_2">
                               <div> 
                                            To :- [NAME]@[DOMAIN].CO.UK Subject: Ticket - [IN-000999999] Description : Dear User,

[REDACTED]
                                </div>
                                <br>
                            </div>
                                </div>
                              <div class="Updated">
                               <div class="plus_header_Additional_info">Updated&nbsp;:Incident Updated on 12-03-2016 10:56:15 by User = [REDACTED]

                                 <a href="javascript:toggle2('contentDivImg2_3', 'imageDivLink2_3');" id="imageDivLink2_3"><img src="images/minus.png" style="float:right;"></a> 
                               </div>
                                   <div class="plus_content" style="display: block;" id="contentDivImg2_3">
                               <div> 
                                             Status:- PROGRESSING changed to PEND CLIENT, 
 Assigned to SOFTWARE DEPLOYED, 
 by User = [REDACTED].
                                </div>
                                <br>
                            </div>
                                </div>
                              <div class="Notes">
                               <div class="plus_header_Additional_info">Notes&nbsp;:Notes Added on 12-03-2016 10:55:53 by [REDACTED]. 
                                 <a href="javascript:toggle2('contentDivImg2_4', 'imageDivLink2_4');" id="imageDivLink2_4"><img src="images/minus.png" style="float:right;"></a> 
                               </div>
                                   <div class="plus_content" style="display: block;" id="contentDivImg2_4">
                               <div> 
                                            <textarea id="notes4" name="notes1" cols="" class="emailForm_input1" style="width: 97%; overflow: hidden; word-wrap: break-word; resize: horizontal; height: 237px;" readonly="readonly">Hello,
[REDACTED]
</textarea>
                                </div>
                                <br>
                            </div>
                                </div>
                </div>

更新:事件于2016年3月20日00:22:52由用户更新=[修订]
分配给罢工者1,
按用户=[已编辑]。

更新:待决客户罢工-1由[修订]于2016年3月20日00:22:36添加。
发送电子邮件:电子邮件于2016年3月20日00:22:09由[编辑]发送 收件人:-[NAME]@[DOMAIN].CO.UK主题:票证-[IN-00099999]说明:尊敬的用户:, [修订]
更新:事件于2016年3月12日10:56:15由用户更新=[修订] 状态:-正在更改为待处理客户端, 分配给已部署的软件, 按用户=[已编辑]。
注:注释由【修订】于2016年3月12日10:55:53添加。 你好 [修订]

与xpath一起使用:

.xpath("//div[@class='Notes' or @class='EMAIL SENT']")[0]
如果笔记先到,你会得到笔记,反之亦然

如果我们对您的html代码片段进行如下更改,在电子邮件中的
中添加一些文本,并在notes中将稍后的标记类更改为

我们可以看到使用lxml的工作原理:

In [13]: from lxml.etree import fromstring, HTMLParser

In [14]: xml = fromstring(html, HTMLParser())

In [15]: xml.xpath("//div[@class='Notes' or @class='EMAIL SENT']")
Out[15]: [<Element div at 0x7f96598d4ea8>, <Element div at 0x7f96598d4ef0>]

In [16]: xml.xpath("//div[@class='Notes' or @class='EMAIL SENT']")[0].text
Out[16]: 'in email\n                               '

In [17]: xml.xpath("//div[@class='Notes' or @class='EMAIL SENT']")[1].text
Out[17]: 'in notes\n    
[13]中的
:从lxml.etree导入fromstring,HTMLParser
在[14]中:xml=fromstring(html,HTMLParser())
[15]中的xml.xpath(//div[@class='Notes'或@class='EMAIL SENT'])
Out[15]:[,]
在[16]:xml.xpath(“//div[@class='Notes'或@class='EMAIL SENT'])[0]中。文本
Out[16]:“在电子邮件中\n”
在[17]:xml.xpath(“//div[@class='Notes'或@class='EMAIL SENT'])[1]中。文本
Out[17]:'在notes中\n

因此,对于selenium,您只需要通过xpath查找元素

使用带有xpath的

.xpath("//div[@class='Notes' or @class='EMAIL SENT']")[0]
如果笔记先到,你会得到笔记,反之亦然

如果我们对您的html代码片段进行如下更改,在电子邮件中的
中添加一些文本,并在notes中将稍后的标记类更改为

我们可以看到使用lxml的工作原理:

In [13]: from lxml.etree import fromstring, HTMLParser

In [14]: xml = fromstring(html, HTMLParser())

In [15]: xml.xpath("//div[@class='Notes' or @class='EMAIL SENT']")
Out[15]: [<Element div at 0x7f96598d4ea8>, <Element div at 0x7f96598d4ef0>]

In [16]: xml.xpath("//div[@class='Notes' or @class='EMAIL SENT']")[0].text
Out[16]: 'in email\n                               '

In [17]: xml.xpath("//div[@class='Notes' or @class='EMAIL SENT']")[1].text
Out[17]: 'in notes\n    
[13]中的
:从lxml.etree导入fromstring,HTMLParser
在[14]中:xml=fromstring(html,HTMLParser())
[15]中的xml.xpath(//div[@class='Notes'或@class='EMAIL SENT'])
Out[15]:[,]
在[16]:xml.xpath(“//div[@class='Notes'或@class='EMAIL SENT'])[0]中。文本
Out[16]:“在电子邮件中\n”
在[17]:xml.xpath(“//div[@class='Notes'或@class='EMAIL SENT'])[1]中。文本
Out[17]:'在notes中\n

因此,对于selenium,您只需要通过xpath查找元素

谢谢你的回复。这确实帮助我更全面地理解。我已经编写了以下代码来测试这一点,但我收到的错误是“list”对象没有属性“find_element_by_css_path”`note_base_table=browser.find_elements_by_class_name('cb')`note_base_表中的note_base_行。find_element_by_by_xpath(//div[@class='Notes'或@EMAIL SENT']):`print:`(注:基本行)`当我从一个表中提取数据时,使用了类似的方法,并且我在基本行中使用了表行中的
。通过标签名(“tr”)查找元素:
显然我遗漏了一些东西,你应该使用
note\u base\u rows.xpath…
你正在循环
note\u base\u table
并使用
note\u base\u table.xpath
这是列表,而不是迭代中的每个元素。感谢你的回复Padraic。这确实帮助我更全面地理解。我已经编写了以下内容代码来测试这一点,但我收到的错误是'list'对象没有属性'find_element_by_css_path'`note_base_table=browser.find_elements_by_class_name('cb')`note_base_中的note_行