Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何使用无名称或ID的selenium向元素发送文本_Python 3.x_Selenium_Selenium Webdriver_Xpath_Css Selectors - Fatal编程技术网

Python 3.x 如何使用无名称或ID的selenium向元素发送文本

Python 3.x 如何使用无名称或ID的selenium向元素发送文本,python-3.x,selenium,selenium-webdriver,xpath,css-selectors,Python 3.x,Selenium,Selenium Webdriver,Xpath,Css Selectors,因此,我正在尝试为我的一个功能自动下载报告。我遇到的问题是,这个特定站点没有用户名和密码字段的名称或ID。以前有人处理过这样的问题吗 以下是用户名字段: <input type="text" value="user" placeholder="username@whitehatsec.com" class="form-control" autocomplete="off" style="background-image: url(&quot;data:image/png;base

因此,我正在尝试为我的一个功能自动下载报告。我遇到的问题是,这个特定站点没有用户名和密码字段的名称或ID。以前有人处理过这样的问题吗

以下是用户名字段:

<input type="text" value="user" placeholder="username@whitehatsec.com" class="form-control" autocomplete="off" style="background-image:
 url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAUBJREFUOBGVVE2ORUAQLvIS4gwzEysHkHgnkMiEc4zEJXCMNwtWTmDh3UGcYoaFhZUFCzFVnu4wIaiE+vvq6+6qTgthGH6O4/jA7x1OiCAIPwj7CoLgSXDxSjEVzAt9k01CBKdWfsFf/2WNuEwc2YqigKZpK9glAlVVwTTNbQJZlnlCkiTAZnF/mePB2biRdhwHdF2HJEmgaRrwPA+qqoI4jle5/8XkXzrCFoHg+/5ICdpm13UTho7Q9/0WnsfwiL/ouHwHrJgQR8WEwVG+oXpMPaDAkdzvd7AsC8qyhCiKJjiRnCKwbRsMw9hcQ5zv9maSBeu6hjRNYRgGFuKaCNwjkjzPoSiK1d1gDDecQobOBwswzabD/D3Np7AHOIrvNpHmPI+Kc2RZBm3bcp8wuwSIot7QQ0PznoR6wYSK0Xb/AGVLcWwc7Ng3AAAAAElFTkSuQmCC&quot;);
background-repeat: no-repeat; background-attachment: scroll; background-size: 16px 18px; background-position: 98% 50%; cursor: auto;">

以下是密码字段:

<input type="password" value="pass" placeholder="Enter your password" class="form-control" autocomplete="off" style="background-image:
 url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAUBJREFUOBGVVE2ORUAQLvIS4gwzEysHkHgnkMiEc4zEJXCMNwtWTmDh3UGcYoaFhZUFCzFVnu4wIaiE+vvq6+6qTgthGH6O4/jA7x1OiCAIPwj7CoLgSXDxSjEVzAt9k01CBKdWfsFf/2WNuEwc2YqigKZpK9glAlVVwTTNbQJZlnlCkiTAZnF/mePB2biRdhwHdF2HJEmgaRrwPA+qqoI4jle5/8XkXzrCFoHg+/5ICdpm13UTho7Q9/0WnsfwiL/ouHwHrJgQR8WEwVG+oXpMPaDAkdzvd7AsC8qyhCiKJjiRnCKwbRsMw9hcQ5zv9maSBeu6hjRNYRgGFuKaCNwjkjzPoSiK1d1gDDecQobOBwswzabD/D3Np7AHOIrvNpHmPI+Kc2RZBm3bcp8wuwSIot7QQ0PznoR6wYSK0Xb/AGVLcWwc7Ng3AAAAAElFTkSuQmCC&quot;);
 background-repeat: no-repeat; background-attachment: scroll; background-size: 16px 18px; background-position: 98% 50%; cursor: auto;">

最坏情况:您可以使用
类型
占位符
属性来定位元素

Xpath

//input[@type='text'][@placeholder='username@whitehatsec.com']
//input[@type='password'][@placeholder='Enter your password']

This also should work
//input[@placeholder='username@whitehatsec.com']
//input[@placeholder='Enter your password']
CSS选择器

input[type='text'][placeholder='username@whitehatsec.com']
input[type='password'][placeholder='Enter your password']

This also should work
input[placeholder='username@whitehatsec.com']
input[placeholder='Enter your password']

很可能您遗漏了某些父元素,这些元素具有一些唯一标识符,如带有名称或id的
表单
标记。请在html中查找它们。它们可以提供更好的XPath。

要将字符序列发送到用户名字段:

<input type="text" value="user" placeholder="username@whitehatsec.com" class="form-control" autocomplete="off" style="background-image:
 url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAUBJREFUOBGVVE2ORUAQLvIS4gwzEysHkHgnkMiEc4zEJXCMNwtWTmDh3UGcYoaFhZUFCzFVnu4wIaiE+vvq6+6qTgthGH6O4/jA7x1OiCAIPwj7CoLgSXDxSjEVzAt9k01CBKdWfsFf/2WNuEwc2YqigKZpK9glAlVVwTTNbQJZlnlCkiTAZnF/mePB2biRdhwHdF2HJEmgaRrwPA+qqoI4jle5/8XkXzrCFoHg+/5ICdpm13UTho7Q9/0WnsfwiL/ouHwHrJgQR8WEwVG+oXpMPaDAkdzvd7AsC8qyhCiKJjiRnCKwbRsMw9hcQ5zv9maSBeu6hjRNYRgGFuKaCNwjkjzPoSiK1d1gDDecQobOBwswzabD/D3Np7AHOIrvNpHmPI+Kc2RZBm3bcp8wuwSIot7QQ0PznoR6wYSK0Xb/AGVLcWwc7Ng3AAAAAElFTkSuQmCC&quot;);
background-repeat: no-repeat; background-attachment: scroll; background-size: 16px 18px; background-position: 98% 50%; cursor: auto;">
  • css\u选择器

    driver.find_element_by_css_selector("input.form-control[value='user'][placeholder='username@whitehatsec.com']").send_keys("DarthDobber")
    
    driver.find_element_by_css_selector("input.form-control[value='pass'][placeholder='Enter your password']").send_keys("DarthDobber")
    
  • xpath

    driver.find_element_by_xpath("//input[@class='form-control' and @value='user'][@placeholder='username@whitehatsec.com']").send_keys("DarthDobber")
    
    driver.find_element_by_xpath("//input[@class='form-control' and @value='pass'][@placeholder='Enter your password']").send_keys("DarthDobber")
    

要向密码字段发送字符序列,请执行以下操作:

<input type="password" value="pass" placeholder="Enter your password" class="form-control" autocomplete="off" style="background-image:
 url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAUBJREFUOBGVVE2ORUAQLvIS4gwzEysHkHgnkMiEc4zEJXCMNwtWTmDh3UGcYoaFhZUFCzFVnu4wIaiE+vvq6+6qTgthGH6O4/jA7x1OiCAIPwj7CoLgSXDxSjEVzAt9k01CBKdWfsFf/2WNuEwc2YqigKZpK9glAlVVwTTNbQJZlnlCkiTAZnF/mePB2biRdhwHdF2HJEmgaRrwPA+qqoI4jle5/8XkXzrCFoHg+/5ICdpm13UTho7Q9/0WnsfwiL/ouHwHrJgQR8WEwVG+oXpMPaDAkdzvd7AsC8qyhCiKJjiRnCKwbRsMw9hcQ5zv9maSBeu6hjRNYRgGFuKaCNwjkjzPoSiK1d1gDDecQobOBwswzabD/D3Np7AHOIrvNpHmPI+Kc2RZBm3bcp8wuwSIot7QQ0PznoR6wYSK0Xb/AGVLcWwc7Ng3AAAAAElFTkSuQmCC&quot;);
 background-repeat: no-repeat; background-attachment: scroll; background-size: 16px 18px; background-position: 98% 50%; cursor: auto;">
  • css\u选择器

    driver.find_element_by_css_selector("input.form-control[value='user'][placeholder='username@whitehatsec.com']").send_keys("DarthDobber")
    
    driver.find_element_by_css_selector("input.form-control[value='pass'][placeholder='Enter your password']").send_keys("DarthDobber")
    
  • xpath

    driver.find_element_by_xpath("//input[@class='form-control' and @value='user'][@placeholder='username@whitehatsec.com']").send_keys("DarthDobber")
    
    driver.find_element_by_xpath("//input[@class='form-control' and @value='pass'][@placeholder='Enter your password']").send_keys("DarthDobber")
    

有六种不同的元素定位方法!谢谢你的回复。但是,我遇到的问题是,这些特定字段具有完全相同的XPATH,并且没有任何其他属性。据我所知,唯一能将这两个字段区分开来的是占位符和输入类型属性,但我不相信您可以通过它们进行搜索。一个字段是
xpath=//input[1]
,另一个是
xpath=//input[2]
。可能还有其他属性,但您没有提供足够的信息。您认为它们没有其他属性是什么意思?从您发布的内容中,您可以看到它们具有不同的
占位符
属性值。你尝过吗?你需要发布你实际尝试过的内容和结果。所以我们不必猜测。