我想检查浏览器是否能够查找包含不同单词的大量不同元素。 我有时在这种情况下使用此代码:
try:
elemtwo = WebDriverWait(browser, 2, poll_frequency=0.1, ignored_exceptions=None).until(
EC.element_to_be_clickable((By.XPATH, "//*[contains(text(), ' first example of text')]")))
if elemtwo:
break
except NoSuchElementException and TimeoutException:
pass
try:
elem = WebDriverWait(browser, 2, poll_frequency=0.1, ignored_exceptions=None).until(
EC.element_to_be_clickable((By.XPATH, "//*[contains(text(), 'second example of text')]")))
if elem:
break
except NoSuchElementException and TimeoutException:
pass
如果我有20个不同的单词,我应该怎么做才能通过尽可能少的书写找到它们? 让我更好地解释一下:例如,我有一个20个单词的列表,如下所示:
我应该怎么做才能不写相同的命令{browser.find_element_by_xpath("//*[contains(text(), "one of the list's word")]")}
20次
第一次编辑:对不起,我没有指定上述20个单词或文本是我任意选择的,无论它们与网站的相关性如何
您可以通过xpath查找元素,而不是通过xpath查找元素,然后进行迭代
编辑-以下是我编写的代码,用于遍历页面上的链接列表
从selenium导入webdriver
chromePath=“chromedriver.exe”
driver=webdriver.Chrome(chromePath)
url=”http://books.toscrape.com/"
获取驱动程序(url)
elems=driver.find_elements_by_xpath(“//a[@href]”)
对于元素中的元素:
硒有两种方法
find_element
和find_elements
查找元素:-查找元素将返回单个web元素,其中
查找元素:-将返回web元素列表
所以与其写这个
n次
你可以简单地做
注意:xpath
//*[contains(text(), "a list's word")]
应该在UI中表示多个web元素,否则,如果恰好是单个web元素,则最终将使用单个web元素现在我看到你正在使用Explict等等,所以在这种情况下
您有很多选择,例如:
或
它们都将返回一个web元素列表,因此当您执行以下操作时:
现在迭代它,或者做Python允许您使用此列表执行的任何操作
请在此处阅读更多信息:
Selenium - official docs
更新1:
相关问题 更多 >
编程相关推荐