Python 3.x 如何使用无名称或ID的selenium向元素发送文本
因此,我正在尝试为我的一个功能自动下载报告。我遇到的问题是,这个特定站点没有用户名和密码字段的名称或ID。以前有人处理过这样的问题吗 以下是用户名字段: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("data:image/png;base
<input type="text" value="user" placeholder="username@whitehatsec.com" class="form-control" autocomplete="off" style="background-image:
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAUBJREFUOBGVVE2ORUAQLvIS4gwzEysHkHgnkMiEc4zEJXCMNwtWTmDh3UGcYoaFhZUFCzFVnu4wIaiE+vvq6+6qTgthGH6O4/jA7x1OiCAIPwj7CoLgSXDxSjEVzAt9k01CBKdWfsFf/2WNuEwc2YqigKZpK9glAlVVwTTNbQJZlnlCkiTAZnF/mePB2biRdhwHdF2HJEmgaRrwPA+qqoI4jle5/8XkXzrCFoHg+/5ICdpm13UTho7Q9/0WnsfwiL/ouHwHrJgQR8WEwVG+oXpMPaDAkdzvd7AsC8qyhCiKJjiRnCKwbRsMw9hcQ5zv9maSBeu6hjRNYRgGFuKaCNwjkjzPoSiK1d1gDDecQobOBwswzabD/D3Np7AHOIrvNpHmPI+Kc2RZBm3bcp8wuwSIot7QQ0PznoR6wYSK0Xb/AGVLcWwc7Ng3AAAAAElFTkSuQmCC");
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("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAUBJREFUOBGVVE2ORUAQLvIS4gwzEysHkHgnkMiEc4zEJXCMNwtWTmDh3UGcYoaFhZUFCzFVnu4wIaiE+vvq6+6qTgthGH6O4/jA7x1OiCAIPwj7CoLgSXDxSjEVzAt9k01CBKdWfsFf/2WNuEwc2YqigKZpK9glAlVVwTTNbQJZlnlCkiTAZnF/mePB2biRdhwHdF2HJEmgaRrwPA+qqoI4jle5/8XkXzrCFoHg+/5ICdpm13UTho7Q9/0WnsfwiL/ouHwHrJgQR8WEwVG+oXpMPaDAkdzvd7AsC8qyhCiKJjiRnCKwbRsMw9hcQ5zv9maSBeu6hjRNYRgGFuKaCNwjkjzPoSiK1d1gDDecQobOBwswzabD/D3Np7AHOIrvNpHmPI+Kc2RZBm3bcp8wuwSIot7QQ0PznoR6wYSK0Xb/AGVLcWwc7Ng3AAAAAElFTkSuQmCC");
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("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAUBJREFUOBGVVE2ORUAQLvIS4gwzEysHkHgnkMiEc4zEJXCMNwtWTmDh3UGcYoaFhZUFCzFVnu4wIaiE+vvq6+6qTgthGH6O4/jA7x1OiCAIPwj7CoLgSXDxSjEVzAt9k01CBKdWfsFf/2WNuEwc2YqigKZpK9glAlVVwTTNbQJZlnlCkiTAZnF/mePB2biRdhwHdF2HJEmgaRrwPA+qqoI4jle5/8XkXzrCFoHg+/5ICdpm13UTho7Q9/0WnsfwiL/ouHwHrJgQR8WEwVG+oXpMPaDAkdzvd7AsC8qyhCiKJjiRnCKwbRsMw9hcQ5zv9maSBeu6hjRNYRgGFuKaCNwjkjzPoSiK1d1gDDecQobOBwswzabD/D3Np7AHOIrvNpHmPI+Kc2RZBm3bcp8wuwSIot7QQ0PznoR6wYSK0Xb/AGVLcWwc7Ng3AAAAAElFTkSuQmCC");
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("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAUBJREFUOBGVVE2ORUAQLvIS4gwzEysHkHgnkMiEc4zEJXCMNwtWTmDh3UGcYoaFhZUFCzFVnu4wIaiE+vvq6+6qTgthGH6O4/jA7x1OiCAIPwj7CoLgSXDxSjEVzAt9k01CBKdWfsFf/2WNuEwc2YqigKZpK9glAlVVwTTNbQJZlnlCkiTAZnF/mePB2biRdhwHdF2HJEmgaRrwPA+qqoI4jle5/8XkXzrCFoHg+/5ICdpm13UTho7Q9/0WnsfwiL/ouHwHrJgQR8WEwVG+oXpMPaDAkdzvd7AsC8qyhCiKJjiRnCKwbRsMw9hcQ5zv9maSBeu6hjRNYRgGFuKaCNwjkjzPoSiK1d1gDDecQobOBwswzabD/D3Np7AHOIrvNpHmPI+Kc2RZBm3bcp8wuwSIot7QQ0PznoR6wYSK0Xb/AGVLcWwc7Ng3AAAAAElFTkSuQmCC");
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=//input[1]
,另一个是xpath=//input[2]
。可能还有其他属性,但您没有提供足够的信息。您认为它们没有其他属性是什么意思?从您发布的内容中,您可以看到它们具有不同的值
和占位符
属性值。你尝过吗?你需要发布你实际尝试过的内容和结果。所以我们不必猜测。