Python 3-Selenium-从嵌套div中删除数据
我对python相当陌生,我正在尝试检查哪个div类首先出现在页面上。我已经对表行进行了这样的操作,但我似乎不知道如何对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'):
我还没有写过任何代码来完成这项工作,也没有写过任何代码来完成这项工作,但在我的脑海中,我想象它是这样工作的
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 :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 :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 :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 :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 :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_行