2016-11-09 37 views
0

我正在使用Selenium和Python3,我试图选择这个元素。无法选择复合类中的链接,硒,python3,css

<a class="multilineClickable cw-ml-clickable-cell cw-ml-svc-desc" style="">Fw: Text - Additions for Text</a> 

这里是更多的代码,因为有这么多希望它更清楚一点,我试图抓住尽可能多的,我可以表明这一点:

<table class="GHN3134DKTE srboardmember-grid" cellpadding="0" cellspacing="0" style="table-layout: fixed; width: 4035px;"> 
<tbody> 
<tbody> 
<tr class="GHN3134DDUE cw-ml-row"> 
<td cellindex="0" class="GHN3134DETE x-grid-td-GHN3134DND"> 
<td cellindex="1" class="GHN3134DETE x-grid-td-GHN3134DMD"> 
<td cellindex="2" class="GHN3134DETE x-grid-td-GHN3134DMD"> 
<td cellindex="3" class="GHN3134DETE x-grid-td-GHN3134DMD"> 
<td cellindex="4" class="GHN3134DETE"> 
<td cellindex="5" class="GHN3134DETE"> 
<td cellindex="6" class="GHN3134DETE x-grid-td-GHN3134DMD"> 
<td cellindex="7" class="GHN3134DETE"> 
<td cellindex="8" class="GHN3134DETE"> 
<div class="GHN3134DGTE"> 
<a class="multilineClickable cw-ml-clickable-cell cw-ml-svc-desc" style="">Text that will change</a> 
</div> 
</td> 
<td cellindex="9" class="GHN3134DETE x-grid-td-GHN3134DND"> 
<td cellindex="10" class="GHN3134DETE x-grid-td-GHN3134DND"> 
<td cellindex="11" class="GHN3134DETE"> 
<td cellindex="12" class="GHN3134DETE"> 
<td cellindex="13" class="GHN3134DETE"> 
<td cellindex="14" class="GHN3134DETE"> 
<td cellindex="15" class="GHN3134DETE"> 
<td cellindex="16" class="GHN3134DETE"> 
<td cellindex="17" class="GHN3134DETE"> 
<td cellindex="18" class="GHN3134DETE"> 
<td cellindex="19" class="GHN3134DETE"> 
<td cellindex="20" class="GHN3134DETE"> 
<td cellindex="21" class="GHN3134DETE x-grid-td-GHN3134DMD"> 
<td cellindex="22" class="GHN3134DETE x-grid-td-GHN3134DMD"> 
<td cellindex="23" class="GHN3134DETE x-grid-td-GHN3134DMD"> 
<td cellindex="24" class="GHN3134DETE"> 
<td cellindex="25" class="GHN3134DETE"> 
<td cellindex="26" class="GHN3134DETE"> 
<td cellindex="27" class="GHN3134DETE"> 
<td cellindex="28" class="GHN3134DETE"> 
<td cellindex="29" class="GHN3134DETE"> 
<td cellindex="30" class="GHN3134DETE"> 
<td cellindex="31" class="GHN3134DETE"> 
<td cellindex="32" class="GHN3134DETE"> 
<td cellindex="33" class="GHN3134DETE x-grid-td-GHN3134DMD"> 
<td cellindex="34" class="GHN3134DETE x-grid-td-GHN3134DMD"> 
<td cellindex="35" class="GHN3134DETE"> 
<td cellindex="36" class="GHN3134DETE"> 
<td cellindex="37" class="GHN3134DETE"> 
</tr> 
<tr class="GHN3134DDUE GHN3134DEUE cw-ml-row"> 
<tr class="GHN3134DDUE cw-ml-row"> 
</tbody> 
</table> 
</div> 

我用的是下面的代码:

driver.find_element_by_class_name("multilineClickable cw-ml-clickable-cell cw-ml-svc-desc" 

,并得到此异常:

selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Compound class names not permitted 

我试过下面的CSS,因为这是应该如何选择复合类。

 driver.find_element_by_css_selector(".multilineClickable.cw-ml-clickable-cell cw-ml-svc-desc") 
    driver.find_element_by_css_selector(".multilineClickable.cw-ml-clickable-cell.cw-ml-svc-desc") 

和得到这个异常

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".multilineClickable.cw-ml-clickable-cell cw-ml-svc-desc" 

但我还是让我周围的CSS头,可有人请我如何正确的代码?

我会粘贴所有的代码但它像7页长,所以我已经扑杀了。

我并没有被XPath或部分链接文本或链接文本选择的原因是因为链接文本将改变。

感谢

+0

我不知道这对CSS。试试这个driver.find_element_by_css_selector(“a [class ='multilineClickable cw-ml-clickable-cell cw-ml-svc-desc']”)...你可以使用xpath作为类名 - “// a [@class ='multilineClickable cw-ml-clickable-cell cw-ml-svc-desc']“。 – Grasshopper

+0

感谢您的帮助grassphopper但是仍然有一些问题... 例外: 'selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:找不到元素:{“方法”:“CSS选择器”,”选择器“:”a [class ='multilineClick able cw-ml-clickable-cell cw-ml-svc-desc']“}' 例外: 'selenium.common.exceptions.NoSuchElementException:消息:no such element :无法找到元素:{“method”:“xpath”,“selector”:“// a [@ class ='multilineClickable cw-ml-clickable-cell cw-ml-svc-desc']”}' 希望更新后的代码会更有意义。 –

+0

This worked: 'links = driver.find_elements_by_xpath(“// a [@ class ='multilineClickable cw-ml-clickable-cell cw-ml-svc-desc']”)' 'links [0] .click( )'谢谢grashopper! –

回答

0

尝试添加一些明确的等待你的脚本将等待元素在页面上加载。尝试下面的代码,

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS, "a.multilineClickable"))); 
driver.find_element_by_css("a.multilineClickable").click(); 
+0

嗨苏达,我得到这个异常: 尝试: 'driver.find_element_by_css_selector( “a.multilineClickable”)点击()' 例外: 'selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“method”:“css selector”,“selector”:“a.multilineClickable”}' –