元素未在 Selenium Python Firefox Web Scraping 中被选中
Element is not getting selected in Selenium Python Firefox Web Scrapping
我的元素 selection 复选框与下面代码段中的列表项之一有问题。
我可以 select 下面代码中的第一个第二和第四个元素,但是我不能 select 第三个元素。
当我只给出 Taj Hotels、Oberoi Hotels 和 Sheraton India 时。 python selenium web 报废检查了这三个。当我将温莎酒店添加到列表中时,它没有 select 脚本显示如下错误。
selenium.common.exceptions.ElementNotInteractableException:消息:元素无法滚动到视图中
注意:每当 selected 项目时,它的 class 名称都会更改为“list-item star ng-star-inserted active”
我 运行 使用 windows 10,Pycharm IDE。
硒==3.7.0
密码学=3.1.1
pandas
Python 脚本:
txt_button = browser.find_element_by_xpath('//*[text() = "' + element_to_be selected + '"]')
txt_button.click()
<!DOCTYPE html>
<html lang="en">
<body>
<fd-order-supplier-list _ngcontent-ydw-c199="">
<div class="block-list block-list-selectable block-list-sm">
<div class="the-list">
<fd-order-supplier-list-item class="list-item star ng-star-inserted active" _nghost-ydw-c198="">
<div _ngcontent-ydw-c198="" class="list-item-inner">
<div _ngcontent-ydw-c198="" class="item-logo placeholder"><!---->
<div _ngcontent-ydw-c198="" class="logo-placeholder-inner ng-star-inserted">H</div><!----></div>
<div _ngcontent-ydw-c198="" class="item-name" style="">Taj Hotels</div>
<div _ngcontent-ydw-c198="" class="item-btn"><a _ngcontent-ydw-c198=""
class="btn btn-outline-default btn-xs">Add</a></div>
<div _ngcontent-ydw-c198="" class="item-check ng-star-inserted">
<div _ngcontent-ydw-c198="" class="item-checkbox"><span _ngcontent-ydw-c198="" class="icon">check</span>
</div>
</div><!----><a _ngcontent-ydw-c198=""
class="btn btn-sm btn-icon btn-text item-info-link ng-star-inserted"><span
_ngcontent-ydw-c198="" class="icon">visibility</span></a><!---->
<div _ngcontent-ydw-c198="" class="item-upper-text">IN</div>
</div>
</fd-order-supplier-list-item>
<fd-order-supplier-list-item class="list-item star ng-star-inserted active" _nghost-ydw-c198="">
<div _ngcontent-ydw-c198="" class="list-item-inner">
<div _ngcontent-ydw-c198="" class="item-logo placeholder"><!---->
<div _ngcontent-ydw-c198="" class="logo-placeholder-inner ng-star-inserted">I</div><!----></div>
<div _ngcontent-ydw-c198="" class="item-name" style="">Oberoi Hotels</div>
<div _ngcontent-ydw-c198="" class="item-btn"><a _ngcontent-ydw-c198=""
class="btn btn-outline-default btn-xs">Add</a></div>
<div _ngcontent-ydw-c198="" class="item-check ng-star-inserted">
<div _ngcontent-ydw-c198="" class="item-checkbox"><span _ngcontent-ydw-c198="" class="icon">check</span>
</div>
</div><!----><a _ngcontent-ydw-c198=""
class="btn btn-sm btn-icon btn-text item-info-link ng-star-inserted"><span
_ngcontent-ydw-c198="" class="icon">visibility</span></a><!---->
<div _ngcontent-ydw-c198="" class="item-upper-text">IN</div>
</div>
</fd-order-supplier-list-item>
<fd-order-supplier-list-item class="list-item star ng-star-inserted" _nghost-ydw-c198="">
<div _ngcontent-ydw-c198="" class="list-item-inner">
<div _ngcontent-ydw-c198="" class="item-name">Windsor Hotels</div>
<div _ngcontent-ydw-c198="" class="item-btn"><a _ngcontent-ydw-c198=""
class="btn btn-outline-default btn-xs">Add</a></div>
<div _ngcontent-ydw-c198="" class="item-check ng-star-inserted">
<div _ngcontent-ydw-c198="" class="item-checkbox"><span _ngcontent-ydw-c198="" class="icon">check</span>
</div>
</div><!----><a _ngcontent-ydw-c198=""
class="btn btn-sm btn-icon btn-text item-info-link ng-star-inserted"><span
_ngcontent-ydw-c198="" class="icon">visibility</span></a><!---->
<div _ngcontent-ydw-c198="" class="item-upper-text">IN</div>
</div>
</fd-order-supplier-list-item>
<fd-order-supplier-list-item class="list-item star ng-star-inserted" _nghost-ydw-c198="">
<div _ngcontent-ydw-c198="" class="list-item-inner">
<div _ngcontent-ydw-c198="" class="item-name">Sheraton India</div>
<div _ngcontent-ydw-c198="" class="item-btn"><a _ngcontent-ydw-c198=""
class="btn btn-outline-default btn-xs">Add</a></div>
<div _ngcontent-ydw-c198="" class="item-check ng-star-inserted">
<div _ngcontent-ydw-c198="" class="item-checkbox"><span _ngcontent-ydw-c198="" class="icon">check</span>
</div>
</div><!----><a _ngcontent-ydw-c198=""
class="btn btn-sm btn-icon btn-text item-info-link ng-star-inserted"><span
_ngcontent-ydw-c198="" class="icon">visibility</span></a><!---->
<div _ngcontent-ydw-c198="" class="item-upper-text">IN</div>
</div>
</fd-order-supplier-list-item>
</div>
</fd-order-supplier-list>
</body>
</html>
而不是:
txt_button = browser.find_element_by_xpath('//*[text() = "' + element_to_be selected + '"]')
添加 tag_name 和 class 属性可以获得更多规范,如下所示:
txt_button = browser.find_element_by_xpath("//div[@class='item-name' and text()='" + element_to_be selected + "']")
准确地说:
txt_button = driver.find_element(By.XPATH, "//div[@class='item-name' and text()='" + element_to_be selected + "']")
注意:您必须添加以下导入:
from selenium.webdriver.common.by import By
理想情况下调用您需要诱导的元素 WebDriverWait for the and you can use either of the following :
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='item-name' and text()='" + element_to_be selected + "']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
我的元素 selection 复选框与下面代码段中的列表项之一有问题。
我可以 select 下面代码中的第一个第二和第四个元素,但是我不能 select 第三个元素。
当我只给出 Taj Hotels、Oberoi Hotels 和 Sheraton India 时。 python selenium web 报废检查了这三个。当我将温莎酒店添加到列表中时,它没有 select 脚本显示如下错误。
selenium.common.exceptions.ElementNotInteractableException:消息:元素无法滚动到视图中
注意:每当 selected 项目时,它的 class 名称都会更改为“list-item star ng-star-inserted active”
我 运行 使用 windows 10,Pycharm IDE。
硒==3.7.0 密码学=3.1.1 pandas
Python 脚本:
txt_button = browser.find_element_by_xpath('//*[text() = "' + element_to_be selected + '"]')
txt_button.click()
<!DOCTYPE html>
<html lang="en">
<body>
<fd-order-supplier-list _ngcontent-ydw-c199="">
<div class="block-list block-list-selectable block-list-sm">
<div class="the-list">
<fd-order-supplier-list-item class="list-item star ng-star-inserted active" _nghost-ydw-c198="">
<div _ngcontent-ydw-c198="" class="list-item-inner">
<div _ngcontent-ydw-c198="" class="item-logo placeholder"><!---->
<div _ngcontent-ydw-c198="" class="logo-placeholder-inner ng-star-inserted">H</div><!----></div>
<div _ngcontent-ydw-c198="" class="item-name" style="">Taj Hotels</div>
<div _ngcontent-ydw-c198="" class="item-btn"><a _ngcontent-ydw-c198=""
class="btn btn-outline-default btn-xs">Add</a></div>
<div _ngcontent-ydw-c198="" class="item-check ng-star-inserted">
<div _ngcontent-ydw-c198="" class="item-checkbox"><span _ngcontent-ydw-c198="" class="icon">check</span>
</div>
</div><!----><a _ngcontent-ydw-c198=""
class="btn btn-sm btn-icon btn-text item-info-link ng-star-inserted"><span
_ngcontent-ydw-c198="" class="icon">visibility</span></a><!---->
<div _ngcontent-ydw-c198="" class="item-upper-text">IN</div>
</div>
</fd-order-supplier-list-item>
<fd-order-supplier-list-item class="list-item star ng-star-inserted active" _nghost-ydw-c198="">
<div _ngcontent-ydw-c198="" class="list-item-inner">
<div _ngcontent-ydw-c198="" class="item-logo placeholder"><!---->
<div _ngcontent-ydw-c198="" class="logo-placeholder-inner ng-star-inserted">I</div><!----></div>
<div _ngcontent-ydw-c198="" class="item-name" style="">Oberoi Hotels</div>
<div _ngcontent-ydw-c198="" class="item-btn"><a _ngcontent-ydw-c198=""
class="btn btn-outline-default btn-xs">Add</a></div>
<div _ngcontent-ydw-c198="" class="item-check ng-star-inserted">
<div _ngcontent-ydw-c198="" class="item-checkbox"><span _ngcontent-ydw-c198="" class="icon">check</span>
</div>
</div><!----><a _ngcontent-ydw-c198=""
class="btn btn-sm btn-icon btn-text item-info-link ng-star-inserted"><span
_ngcontent-ydw-c198="" class="icon">visibility</span></a><!---->
<div _ngcontent-ydw-c198="" class="item-upper-text">IN</div>
</div>
</fd-order-supplier-list-item>
<fd-order-supplier-list-item class="list-item star ng-star-inserted" _nghost-ydw-c198="">
<div _ngcontent-ydw-c198="" class="list-item-inner">
<div _ngcontent-ydw-c198="" class="item-name">Windsor Hotels</div>
<div _ngcontent-ydw-c198="" class="item-btn"><a _ngcontent-ydw-c198=""
class="btn btn-outline-default btn-xs">Add</a></div>
<div _ngcontent-ydw-c198="" class="item-check ng-star-inserted">
<div _ngcontent-ydw-c198="" class="item-checkbox"><span _ngcontent-ydw-c198="" class="icon">check</span>
</div>
</div><!----><a _ngcontent-ydw-c198=""
class="btn btn-sm btn-icon btn-text item-info-link ng-star-inserted"><span
_ngcontent-ydw-c198="" class="icon">visibility</span></a><!---->
<div _ngcontent-ydw-c198="" class="item-upper-text">IN</div>
</div>
</fd-order-supplier-list-item>
<fd-order-supplier-list-item class="list-item star ng-star-inserted" _nghost-ydw-c198="">
<div _ngcontent-ydw-c198="" class="list-item-inner">
<div _ngcontent-ydw-c198="" class="item-name">Sheraton India</div>
<div _ngcontent-ydw-c198="" class="item-btn"><a _ngcontent-ydw-c198=""
class="btn btn-outline-default btn-xs">Add</a></div>
<div _ngcontent-ydw-c198="" class="item-check ng-star-inserted">
<div _ngcontent-ydw-c198="" class="item-checkbox"><span _ngcontent-ydw-c198="" class="icon">check</span>
</div>
</div><!----><a _ngcontent-ydw-c198=""
class="btn btn-sm btn-icon btn-text item-info-link ng-star-inserted"><span
_ngcontent-ydw-c198="" class="icon">visibility</span></a><!---->
<div _ngcontent-ydw-c198="" class="item-upper-text">IN</div>
</div>
</fd-order-supplier-list-item>
</div>
</fd-order-supplier-list>
</body>
</html>
而不是:
txt_button = browser.find_element_by_xpath('//*[text() = "' + element_to_be selected + '"]')
添加 tag_name 和 class 属性可以获得更多规范,如下所示:
txt_button = browser.find_element_by_xpath("//div[@class='item-name' and text()='" + element_to_be selected + "']")
准确地说:
txt_button = driver.find_element(By.XPATH, "//div[@class='item-name' and text()='" + element_to_be selected + "']")
注意:您必须添加以下导入:
from selenium.webdriver.common.by import By
理想情况下调用您需要诱导的元素 WebDriverWait for the
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='item-name' and text()='" + element_to_be selected + "']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC