我在获取python硒来查找并单击链接时遇到问题。我正在尝试自动将学生评论输入D2L。 ICN_Feedback_3400653_125630,第一组数字是成绩项目ID,第二组数字是学生ID。我的计划是使用gspread的“接受注释”并将其通过硒粘贴到d2l中。但是,我无法单击弹出Java脚本文本框的链接。
我尝试了以下各种变化:
element = driver.find_elements_by_id('ICN_Feedback_3400653_125630')
element = river.find_element_by_xpath("""//*@id="ICN_Feedback_3400653_125630"]/d2l-icon""")
element = driver.find_element_by_css_selector("#ICN_Feedback_3400653_125630")
element.click()
find_element_by_id()
不起作用,因为页面上有2个ID实例,一个是我需要的链接,另一个是在做什么?诚然,我对此并不精通。我会以错误的方式处理吗?
以下是我从中获取的信息来源:
<div class="dco" id="z_ch" style="display:inline;float:right;"><div
class="dco_c" style="display:inline;"><a class="d2l-imagelink"
id="ICN_Feedback_3400653_125630" href="javascript:void(0);"
onclick="return false;" title="Enter comments for FIRSTNAME LASTNAME in a
new window" aria-label="Enter comments for FIRSTNAME LASTNAME in a new
window"
role="button"><d2l-icon icon="d2l-tier1:edit" class="x-scope d2l-icon-
0"><svg viewBox="0 0 18 18" preserveAspectRatio="xMidYMid meet"
focusable="false" class="style-scope d2l-icon" style="pointer-events:
none; display: block; width: 100%; height: 100%;"><g class="style-scope
d2l-icon"><path d="M2.85 10.907l-.672 1.407L.033 17.26a.535.535 0 0 0 0
.368.917.917 0 0 0 .155.184.917.917 0 0 0 .184.155A.54.54 0 0 0 .56
18a.48.48 0 0 0 .18-.033l4.946-2.145 1.407-.672 8.53-8.53-4.244-
4.243zM4.857 14l-1.515.657L4 13.143l.508-1.064 1.415 1.413zM16.707
5.537l-4.244-4.244.707-.707a2 2 0 0 1 2.83 0L17.414 2a2 2 0 0 1 0 2.83z"
class="style-scope d2l-icon"></path></g></svg></d2l-icon></a>
</div></div>
答案 0 :(得分:0)
根据您共享的 HTML 在所需元素上调用click()
,您可以使用以下解决方案:
driver.find_element_by_xpath("//a[@class='d2l-imagelink'][starts-with(@id,'ICN_Feedback_')][contains(@title,'FIRSTNAME LASTNAME')]").click()
在讨论Selenium Web Driver & Java. Element is not clickable at point (36, 72). Other element would receive the click:之后,您会看到错误元素不可点击 ,尝试使用executeScript()
方法,如下所示:
myElement = driver.find_element_by_xpath("//a[@class='d2l-imagelink'][starts-with(@id,'ICN_Feedback_')][contains(@title,'FIRSTNAME LASTNAME')]")
driver.execute_script("arguments[0].click();", myElement)