Selenium、python、findelement、Xpath 方法无法定位或单击我页面上的元素

问题描述 投票:0回答:1

成功登录网站后,我无法定位页面上的元素。

我的目标是单击按钮来参与提议的活动。该按钮仅在午夜之后出现,我不想留在电脑前点击参与按钮。

使用下面的 python 脚本,我已经可以登录并连接到网站了:

# find username field and send the username itself to the input field
browser.find_element("id", "login").send_keys(username)
# find password input field and insert password as well
browser.find_element("id", "motdepasse").send_keys(password)
# click login button
browser.find_element(By.CLASS_NAME, "submit").click()

出现新页面,但我现在可以单击参与按钮

这是页面代码

<li class="td" style="width:5%;">
    ul class="BtnsIco">
                    <li class="ajaxOpen user" data-url="_Programme_lstparticipants&amp;id=3593" title="Liste des participants" data-titre="Liste des participants"></li> <li class="bouton partAdd" data-url="_Programme_inscription&amp;id=3593" title="S'inscrire" data-titre="S'inscrire"></li> 
    </ul>
</li>

我尝试了几种方法来单击“bouton partAdd”类,但找不到像我在第一页连接上所做的那样检测按钮的 XPATH 方法。

try:
    WebDriverWait(browser, 20).until(EC.element_to_be_clickable(By.PARTIAL_LINK_TEXT, 'inscrire'))
    PartAdd_link = browser.find_element(By.PARTIAL_LINK_TEXT, 'inscrire')    
    print(PartAdd_Link)
except:
    print("Could not get PartAdd_Link")
    pass
try:
    WebDriverWait(browser, 20).until(EC.element_to_be_clickable(By.CLASS_NAME, 'bouton partAdd'))
    content = browser.find_element(By.CLASS_NAME, 'bouton partAdd')
    print(content.CLASS_NAME)
except:
    print("Could not get Class_Name")
    pass

我的代码总是出现异常。我尝试了其他方法但没有成功。我添加了 WebdriverWait 安全性,但它对结果没有任何影响。

我没有网络编程经验,所以如果有人能给我一种找到或理解问题的方法,我将不胜感激。

提前谢谢您

您好,成功登录网站后,我无法在页面上定位元素。

我的目标是单击按钮来参与提议的活动。该按钮仅在午夜之后出现,我不想留在电脑前点击参与按钮。

使用下面的 python 脚本,我已经可以登录并连接到网站了:

# find username field and send the username itself to the input field
browser.find_element("id", "login").send_keys(username)
# find password input field and insert password as well
browser.find_element("id", "motdepasse").send_keys(password)
# click login button
browser.find_element(By.CLASS_NAME, "submit").click()
# wait for 10sec to load new page
time.sleep(10)

出现新页面,但我现在可以单击参与按钮

这是页面代码

<li class="td" style="width:5%;">
    ul class="BtnsIco">
                    <li class="ajaxOpen user" data-url="_Programme_lstparticipants&amp;id=3593" title="Liste des participants" data-titre="Liste des participants"></li> <li class="bouton partAdd" data-url="_Programme_inscription&amp;id=3593" title="S'inscrire" data-titre="S'inscrire"></li> 
    </ul>
</li>

我尝试了几种方法来单击“bouton partAdd”类,但找不到像我在第一页连接上所做的那样检测按钮的 XPATH 方法。

try:
    WebDriverWait(browser, 20).until(EC.element_to_be_clickable(By.PARTIAL_LINK_TEXT, 'inscrire'))
    PartAdd_link = browser.find_element(By.PARTIAL_LINK_TEXT, 'inscrire')    
    print(PartAdd_Link)
except:
    print("Could not get PartAdd_Link")
    pass
try:
    WebDriverWait(browser, 20).until(EC.element_to_be_clickable(By.CLASS_NAME, 'bouton partAdd'))
    content = browser.find_element(By.CLASS_NAME, 'bouton partAdd')
    print(content.CLASS_NAME)
except:
    print("Could not get Class_Name")
    pass

我的代码总是出现异常。我尝试了CSS等其他方法,但没有成功。我添加了 WebdriverWait 安全性,但它对结果没有任何影响。

我没有网络编程经验,所以如果有人能给我一种找到或理解问题的方法,我将不胜感激。

提前谢谢您

python selenium-webdriver xpath
1个回答
0
投票

如果您的用例是单击午夜后出现的按钮。我的方法是使用 python 中的日期时间库。

from datetime import datetime
import time

def midnightChecker(day):
    while day+1 != datetime.now().day:
        time.sleep(5)
        print(f'{23-datetime.now().hour} hour {59-datetime.now().minute} minutes and {59-datetime.now().second} seconds left till midnight')
        continue
midnightChecker(datetime.now().day)

这个循环将在午夜中断。您可以添加此检查器。 尝试单击发布此按钮,如果您仍然收到错误消息,请分享您收到的错误消息。

在你的异常块中,而不是只写

except:

except Exception as e:
       print(e)

这将打印引发的异常。

© www.soinside.com 2019 - 2024. All rights reserved.