Selenium Python 在 .click() 之后提取文本

Selenium Python Extracting text after .click()

大家好,

我在尝试点击网站上的某个元素,然后提取点击产生的文本时遇到很多问题。另一个考虑因素是此代码必须足够健壮才能循环。

在下面修改后的网页源代码中,id='atelno80112862' 是我识别要点击的元素的方式。点击后,我要的phone号码“(65)6890 6333”替换了网页上的文字"Call"。之后, id='telno80112862' 是我识别要提取的文本的方式。

<div id="ctl00_ContentPlaceHolder1_dgrdCompany_ctl02_idContact">
<a style="display: inline; width: 100px; cursor: pointer; cursor: hand;" id='atelno80112862' onclick="showElement('telno80112862');" title='(65) 6890 6333'>
<img src="/images/call_icon.jpg" />CALL</a>
<a style="display: none; width: 100px;" id='telno80112862' href="tel:(65) 6890 6333">(65) 6890 6333</a>

关于我的代码(我已经在问题区域将其修改为零):

for j in range(2 ,10):
    path5 = "ctl00_ContentPlaceHolder1_dgrdCompany_ctl0{0}_idContact".format(j)
    path6 = "//a[contains(@id,'atel')]"
    path7 = "//a[@id='telno80112862']"

    try:
        phone = driver.find_element_by_id(path5)
        phone_num = phone.find_element_by_xpath(path6).click()
        phone_info = phone.find_element_by_xpath(path7)
    except:
        print("ERROR: NO PHONE NUMBER")

这部分有效,当我循环时,每次迭代都会得到这个:

(65) 6890 6333 错误:否 PHONE 编号

第一个问题是为什么我也得到 except 输出?第二个问题是我无法提高 path7 的健壮性。它只有在我提供确切的相对 xpath 时才有效。我尝试使用部分 xpath "//a[(contains(@id,'telno')]" 但似乎不起作用。

如有任何帮助,我们将不胜感激。干杯!

下面的代码在一页上获取所有公司名称和 phone 编号。

companies = driver.execute_script('return [...document.querySelectorAll("a[id$=Hyperlink4],a[id^=telno]")].map((e,i) => e.innerText.trim())')
print(companies)

for i in range(0, len(companies), 2):
    print('{0} : {1}'.format(companies[i], companies[i+1]))