gpt4 book ai didi

python - 如何获取 Selenium 中元素的父元素?

转载 作者:行者123 更新时间:2023-12-05 03:38:38 26 4
gpt4 key购买 nike

我在一个网站上有多个表格,我需要找到包含文本“blabla”的元素的表格,然后在同一个表格中我将按下一个按钮,我试过这个:

a = browser.find_element_by_xpath(f'//*[contains(text(),"blabla")]')
b = a.find_element_by_xpath('..')
browser.find_element_by_xpath(f'{b}/btn').click()

b --> <selenium.webdriver.remote.webelement.WebElement (session="0c5008a89c2da6d4b2e83f4237afc6ba", element="ef8fddcc-88fb-4947-b2c2-2e5ac400b5a1")>

但它告诉我这是一个无效的 xpath,因为 b 不是 xpath,而是我不明白的其他东西,所以有没有人知道如何正确地做到这一点?或者如果可能的话

编辑:这是一个表格的例子

<tr style="height:30px;">
<td valign="top" style="width:50px;">
<b>Code:</b><br>
<a href="editcourse_lookup.aspx?coursecode=SB32173" target="_blank">
SB32173
</a>
<br>
<br>
Azan - Tajweed ul Quran Level 1
<br>


<a href="javascript:void(0);" onclick="window.open('learningplan_welcome.aspx?coursecode=SB32173&amp;teacherid=365&amp;studid=13150&amp;regNo=22478','windowname1','width=900, height=600');return false;" target="_blank">View Report</a>
<br>
<a href="javascript:void(0);" onclick="window.open('Convert-report.aspx?coursecode=SB32173&amp;teacherid=365&amp;studid=13150&amp;regNo=22478','windowname1','width=550, height=180');return false;" target="_blank">Convert Report</a>
<span id="ContentPlaceHolder3_gv_1To1CourseDetails_lblpuseddetails_0"></span>
<br>

<br>
<a href="editsubs.aspx?mode=Modify&amp;courseCode=SB32173&amp;sid=13150&amp;uid=musafdar@uncg.edu&amp;g=All&amp;type=s&amp;parentpage=y" target="_blank">Edit</a>
<br>
<span id="ContentPlaceHolder3_gv_1To1CourseDetails_lblSubjectdetails_0" style="font-size:10px;"><b>Member Name:</b>Osman Khan<br><b>Subject:</b>Tajweed ul Quran Level 1<br><b>Curriculum:</b><br><b>Material:</b>Tajweed ul Quran Level 1</span>

</td><td align="center" style="width:130px;">




Wed, 04 Aug 2021
-
Wed, 29 Sep 2021
<br>
Wed, 1:00 AM - 2:00 AM<br>Fri, 1:00 AM - 2:00 AM<br>Sun, 3:00 PM - 4:00 PM
<br>
<a href="editCourse1To1.aspx?mode=Modify&amp;courseCode=SB32173" id="ContentPlaceHolder3_gv_1To1CourseDetails_a_EditCourse_0" style="color: Blue;">Modify</a><br>
<a id="ContentPlaceHolder3_gv_1To1CourseDetails_a_NewSubscr_0" style="color: Blue;cursor:pointer;" title="Book New Subscription" onclick="window.open('addcourse_1To1.aspx?reg=old&amp;mode=new&amp;catid=1&amp;coursecode=SB32173&amp;studentid=13148&amp;username=Irfan safdar&amp;timezone=13&amp;country=869&amp;sid=13150&amp;g=All&amp;type=s','windowname1','location=1,status=1,scrollbars=1,width=900, height=650')">
Book New Subscription
</a>
<br><br>
<a onclick="return confirm('Are you Sure to Reschedule ?');" id="ContentPlaceHolder3_gv_1To1CourseDetails_lnkReschedule_0" title="Click to Reschedule" href="javascript:__doPostBack('ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$lnkReschedule','')">Reschedule</a>



</td><td align="center">
Fri, 1:00 AM - 2:00 AM<br>Sun, 3:00 PM - 4:00 PM<br>Wed, 1:00 AM - 2:00 AM<br>20<br>0.00<br><a href="popup/updatesubscriptionpackage.aspx?coursecode=SB32173&amp;sid=13150&amp;subsno=155534" target="_blank">Amend Default Subscription</a><br><br><a href="popup/Reschedule_Remaining_classes.aspx?coursecode=SB32173&amp;mode=CD" target="_blank">Amend Current Subscription</a>

</td><td align="center">

Mohamed Sawy
<br>
<a href="Send_Email.aspx?emailcode=Teacher_Confirm&amp;coursecode=SB32173&amp;back_sid=13150&amp;back_g=All&amp;back_type=s">
Confirm()</a>
<br>
<a href="Send_Email.aspx?emailcode=Teacher_Cancel&amp;coursecode=SB32173&amp;back_sid=13150&amp;back_g=All&amp;back_type=s">
Cancel()</a>

<br><a target="_blank" href="PopUp/createmessage.aspx?mode=Teacher&amp;tid=365"><img src="images/email.jpg" width="25" height="19"></a><a target="_blank" href="PopUp/SMSText.aspx?mode=Teacher&amp;tid=365"><img src="images/text.jpeg" width="22" height="20"></a><a target="_blank" href="PopUp/call.aspx?mode=Teacher&amp;tid=365" '=""><img src="images/iphone-call-icon.jpg" width="22" height="20"></a><a target="_blank" title="Student Notes" href="PopUp/teachernotes.aspx?tid=365" '=""><img src="images/notes.jpeg" width="22" height="20"></a>
<br>
<a href="popup/Update_Teacher.aspx?coursecode=SB32173" target="_blank">Change Teacher</a>
<br><br><a href="https://secure.examhelper.org/eaalim/teacher/calendar/default.aspx?tid=365" target="_blank">View Teacher Calendar</a>
</td><td align="center" style="width:50px;">
<span id="ContentPlaceHolder3_gv_1To1CourseDetails_lblinvoiceno_0">22478</span><br>
<span id="ContentPlaceHolder3_gv_1To1CourseDetails_lblinvoicedate_0">Wed, 04 Aug 2021</span>
</td><td align="center" style="width:50px;">
<a href="SendInvoice_1To1.aspx?coursecode=SB32173&amp;back_sid=13150&amp;back_g=All&amp;back_type=s">
Invoice(0)</a>
</td><td align="center">
<span id="ContentPlaceHolder3_gv_1To1CourseDetails_lblNoOfLessons_0">20</span>
</td><td align="center" style="width:50px;">
<span id="ContentPlaceHolder3_gv_1To1CourseDetails_lblAttended_0">0</span>
</td><td align="center" style="width:50px;">
<span id="ContentPlaceHolder3_gv_1To1CourseDetails_lblAbsent_0">1</span>
</td><td align="center">
<span id="ContentPlaceHolder3_gv_1To1CourseDetails_lblMarkup_0">0 out of 5</span><br>
<a href="javascript:void(0);" onclick="window.open('edit-markup.aspx?coursecode=SB32173','windowname1','width=400, height=180');return false;" target="_blank">Modify</a>
</td><td align="center" style="width:50px;">


19
<hr>
<span id="ContentPlaceHolder3_gv_1To1CourseDetails_lblTotalLessonHtml_0" style="font-size:9px;"><b>Total Lessons:</b>20<br><b>Total Hrs:</b>20<br><b>Total Lessons Left:</b>19<br><b>Total Hrs Left:</b>5<br><b>Total Extra Lessons Left:</b>0<br><b>Total Extra Hrs Left:</b>0mins<br><b>Total Free Lessons Left:</b>0<br><b>Total Free Hrs Left:</b>0mins</span>
<hr>
<span id="ContentPlaceHolder3_gv_1To1CourseDetails_lblmissinglessons_0">20/20=0 missing</span>
</td><td align="right" style="width:50px;">
<span id="ContentPlaceHolder3_gv_1To1CourseDetails_lblcoursefee_0">0&nbsp;£</span>
</td><td align="center">
<a href="viewlessons.aspx?courseid=SB32173&amp;regno=22478&amp;cname=Azan - Tajweed ul Quran Level 1" target="_blank">View</a><br><br><br>
<a href="popup/addCourseLesson.aspx?id=SB32173" target="_blank">
Add Lessons
</a>
</td><td align="center">
<span id="ContentPlaceHolder3_gv_1To1CourseDetails_lblBooked_0">Enroled </span>
</td><td align="center">
<a onclick="return confirm('Are you Sure to change Live Chat Status ?');" id="ContentPlaceHolder3_gv_1To1CourseDetails_lnkLiveChatStatus_0" title="Click to Active/InActive" href="javascript:__doPostBack('ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$lnkLiveChatStatus','')">Active</a>
</td><td align="center">

Active

<select name="ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$ddlStatus" onchange="return ShowConfirm(this);setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$ddlStatus\',\'\')', 0)" id="ContentPlaceHolder3_gv_1To1CourseDetails_ddlStatus_0" style="border-color:#999999;border-width:1px;border-style:Solid;font-family:Verdana;font-size:11px;">
<option selected="selected" value="">Change Status</option>
<option value="Active">Active</option>
<option value="Archive">Archive</option>
<option value="Inactive">Inactive</option>
<option value="Cancelled">Cancelled</option>

</select>
<br> <br>
<select name="ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$ddlAction" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$ddlAction\',\'\')', 0)" id="ContentPlaceHolder3_gv_1To1CourseDetails_ddlAction_0" style="border-color:#999999;border-width:1px;border-style:Solid;font-family:Verdana;font-size:11px;width:170px;">
<option selected="selected" value="">Pause Course - select</option>
<option value="Pause Course">Pause Course with pending lessons</option>

</select>

</td><td align="center">

</td><td align="center">

<select name="ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$drpwhiz" id="ContentPlaceHolder3_gv_1To1CourseDetails_drpwhiz_0" style="border-color:#999999;border-width:1px;border-style:Solid;font-family:Verdana;font-size:11px;">
<option selected="selected" value="999,zoomfree">Zoom Free</option>
<option value="1,braincert">Braincert</option>
<option value="1,wiziq">WizIQ 25</option>
<option value="2,wiziq">WizIQ 100</option>
<option value="3,wiziq">WizIQ 500</option>

</select>
<br>
<a id="ContentPlaceHolder3_gv_1To1CourseDetails_lnkswhiz_0" href="javascript:__doPostBack('ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$lnkswhiz','')">Go</a>
<br>
<a onclick="alert('You have already generated the lesson url for this course.');" id="ContentPlaceHolder3_gv_1To1CourseDetails_lnkGenUrl1_0" title="Already Generated" href="javascript:__doPostBack('ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$lnkGenUrl1','')">Generated</a>

<hr>
<a onclick="return confirmGenUrl();" id="ContentPlaceHolder3_gv_1To1CourseDetails_LinkButton1_0" title="Click to Generate url" href="javascript:__doPostBack('ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$LinkButton1','')">Re-Generate Existing URL</a>
</td><td align="center">
<a onclick="return confirm('Are sure want to request for ecertficate?');" id="ContentPlaceHolder3_gv_1To1CourseDetails_lnkRequestCertificate_0" href="javascript:__doPostBack('ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$lnkRequestCertificate','')">Request eCertificate(0)</a>

<br>
<a href="Certificate-logs.aspx?coursecode=SB32173" target="_blank">Send Certificate</a>
<br>
<a onclick="return confirm('Are you Sure to Delete ?');" id="ContentPlaceHolder3_gv_1To1CourseDetails_lnkactive11_0" title="Click to Delete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$lnkactive11','')">Delete</a>
<br>
<a id="ContentPlaceHolder3_gv_1To1CourseDetails_lnkstatusActive_0" href="javascript:__doPostBack('ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$lnkstatusActive','')">Active SMS</a>
<br>
<select name="ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$ddlclasstype" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder3$gv_1To1CourseDetails$ctl02$ddlclasstype\',\'\')', 0)" id="ContentPlaceHolder3_gv_1To1CourseDetails_ddlclasstype_0" style="border-color:#999999;border-width:1px;border-style:Solid;font-family:Verdana;font-size:11px;">
<option selected="selected" value="Auto">Auto</option>
<option value="Manual">Manual</option>

</select>
</td>
</tr>

最佳答案

回答这部分

is there a way to locate a parent of a certain element and then inthat parent you locate a button

假设这是 xpath:

//*[contains(text(),"blabla")]

您可以使用/../parent::node-name 到达父节点。

让我们从例子中理解:-

//*[contains(text(),"blabla")]/..

应该找到 //*[contains(text(),"blabla")] 的父节点

如果你想有父过滤器,你可以等效地使用:-

 //*[contains(text(),"blabla")]/parent::div[@id='some id']

在这种情况下,它将寻找具有 id 等于 some id 的父 div(这只是一个示例)

关于python - 如何获取 Selenium 中元素的父元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68873400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com