Selenium Web驱动程序python XPath不工作

b1zrtrql  于 2022-12-23  发布在  Python
关注(0)|答案(4)|浏览(182)

我正在尝试使用Python和Selenium Webdriver自动化一个过程。我能够成功登录并导航到我想发布内容的页面,但由于某种原因,系统无法识别XPath。
它给出以下错误:
无此类元素异常:找不到元素://* [@id ="widecol" ]/div/表单/p [1 ]/输入
下面是我的代码:

from selenium import webdriver
mydriver = webdriver.Firefox()
mydriver.get("https://www.phishtank.com/")
mydriver.maximize_window()
mydriver.find_element_by_xpath('//*[@id="username"]').send_keys("myusername")
mydriver.find_element_by_xpath('//*[@id="password"]').send_keys("mypassword")
mydriver.find_element_by_xpath('//*[@id="header"]/div[2]/form/input[3]').click()
mydriver.find_element_by_xpath('//*[@id="nav"]/ul/li[2]/a').click()
mydriver.find_element_by_xpath('//*[@id="widecol"]/div/form/p[1]/input').send_keys("sample text testing to fill form")

这是我的HTML代码

<div id="widecol">
<div class="padded">
    <form method="POST">
    <h2>Add A Phish</h2>
    <ol>
        <li>Visit our <b><a href="what_is_phishing.php">What is phishing?</a></b> page to confirm that the suspected phish meets all of the criteria.</li>
        <li>Add a phish using the form below, or even better, submit a phish directly <a href="mailto:phish@phishtank.com">via email</a>.</li>
    </ol>
    <h3>Phish URL:</h3>
            <p>
            <input type="text" name="phish_url" style="width:90%;" value="" /><br />
            <span class="small">Copy and paste the URL of the phishing website.</span>
    </p>
    <h3>What is the organization referenced in the email?</h3>
            <p class="slim">
        <select name="phish_target">

得到了以下错误:
无此类元素异常:找不到元素://* [@id ="widecol" ]/div/表单/p [1 ]/输入
下面是HTML代码:

<input type="text" name="phish_url" style="width:90%;" value=""> outer HTML code

这是我的XPath:

//*[@id="widecol"]/div/form/p[1]/input - Xpath

请告诉我到哪里找,谢谢。

ifmq2ha2

ifmq2ha21#

您需要引入 WebDriverWait 以使元素可单击,您可以使用以下代码行:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='phish_url' and @type='text']"))).send_keys("sample text testing to fill form")
flseospp

flseospp2#

没有完整的HTML,我们无法判断XPath是否正确。您可以尝试包含更多的外部HTML代码吗?
您可以尝试在点击最后一个URL后等待,也许元素还没有加载。您也可以检查输入是否在iframe中,这可能是导致问题的原因。

ctehm74n

ctehm74n3#

你能试试下面的方法吗?

//*[@id='widecol']//input[@name='phish_url']

应该对那个输入有效。只是为了试验/错误起见,在这样做之前尝试一个小的等待。

zlwx9yxi

zlwx9yxi4#

新的Selenium版本不允许。
尝试以下代码

from selenium.webdriver.common.by import By

然后将“find_element_by_xpath语句”更改为

mydriver.find_element(By.XPATH,'//[@id="username"]').send_keys("myusername")

You can refer to the link to know more

相关问题